Не корректная работа функции с указателями
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *remove_url_anchor(const char *url_in) {
char result[strlen(url_in)];
char *rp;
unsigned int counter = 0;
while (*url_in) {
if (*url_in=='#') break;
result[counter] = *url_in;
url_in++;
counter++;
}
rp = result;
# если вывожу тут выводит правильный результат
return rp;
}
int main(int argc, char *argv[]) {
const char word[11] = "Hello#index";
char *solution = remove_url_anchor(word);
printf("%s", solution); #не выводит ничего, должно Hello
return 0;
}
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Вы возвращаете из функции указатель на локальную переменную result. Память, которую эта переменная занимает, может быть переписана в любой момент после окончания функции.