Създавам програма за отваряне на .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;" решава проблема? Заседнал съм с това и не мога да продължа, защото не знам дали това несъответствие може да доведе до по-големи проблеми по-късно, мисля да напиша собствена функция за копиране на низовете, но преди това наистина искам да разбера, че грешка.