Я создаю программу для открытия файлов .txt в заданном каталоге, у меня есть массив со всеми абсолютными путями файлов внутри рассматриваемого каталога, и я создаю функцию для извлечения и возврата имени файлов, функция записывается следующим образом:
char *name(char *string) {
int i = strlen(string);
char *aux;
while(string[i-1] != '/'){
i--;
}
strcpy(aux, &string[i]);
return aux;
}
Приведенная выше функция выдает ошибку Segmentation Fault, но если я добавлю следующую строку " int j = 0;" до объявления aux ошибка ушла, новый и рабочий код
char *name(char *string) {
int i = strlen(string);
int j = 0;
char *aux;
while(string[i-1] != '/'){
i--;
}
strcpy(aux, &string[i]);
return aux;
}
ввод: C:\test\a.txt
вывод: a.txt
Почему добавление «int j = 0;» решает проблему? Я застрял с этим и не могу продолжать, потому что я не знаю, может ли это несоответствие привести к более серьезным проблемам позже, я думаю о написании собственной функции для копирования строк, но перед этим я действительно хочу понять, что ошибка.