我正在创建一个程序来打开给定目录中的 .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;” 解决问题?我坚持这一点,无法继续,因为我不知道这种不一致是否会在以后导致更大的问题,我正在考虑编写自己的函数来复制字符串,但在此之前我真的很想了解错误。