-2
我不断收到分割错误。我发现它发生在这两条线之间:C - 分割错误某处
printf("%s - File exists!\n", file_name);
printf("inforloop");
但我不确定为什么分段错误一直在发生。 这是整个代码:
#include<stdio.h>
#include<unistd.h>
#include<string.h>
FILE *fp;
char err_message[128], file_name[128];
int main(int argc, char *argv[])
{
if(argc <= 2)
{
printf("ERROR : Usage %s <file name>\n", argv[0]);
return 1;
}
int i = 1;
for(i; i< argc; i++)
{
strcpy(file_name, argv[i]);
if ((access(file_name, F_OK)) != -1)
{
printf("begining of for loop\n");
printf("%s - File exists!\n", file_name);
printf("inforloop");
fclose(fp);
}
else
{
sprintf(err_message, "open %s", file_name);
perror(err_message);
}
}
return 0;
}
结果:
1
begining of for loop
date.txt - File exists!
Segmentation fault (core dumped)
你没有分配'fp'。 – user2357112
看起来像C. C++是一种不同的语言。不要添加不相关的标签。 – Olaf
一个调试器会告诉你到底发生了什么故障,并且将会更快(从长远来看),然后使用SO作为调试服务 - 即使你坚持使用原始GDB。 – Clifford