C-分段错误

C-分段错误,c,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], f

我总是遇到一个分割错误。我发现它发生在这两条线之间:

            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;
}

您正在
fclose
ing
fp
,您从未
fopen
ed甚至初始化过它


输出在打印前<代码> iFoRoC< <代码>被切断,因为您的标准输出是行缓冲的,并且在代码> > C. > <代码>之后没有行提要。

您没有分配< C++ > FP>代码>。不要添加不相关的标记。调试器将准确地告诉您错误发生的位置,并且(从长远来看)将比使用SO作为调试服务更快——即使您仍然使用原始GDB。
 1
 begining of for loop
 date.txt - File exists!
 Segmentation fault (core dumped)