Не корректная работа функции с указателями

#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. Память, которую эта переменная занимает, может быть переписана в любой момент после окончания функции.

→ Ссылка