我已经用评论将程序缩减为:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    FILE * in;
    in = fopen(argv[1], "r");
    fclose(in);
    fprintf(stderr, "clear **** \n");
    return(0);
 }

然而,它仍然有缺陷。输出为:
clear
Segmentation Fault

我知道是fclose引起了这个问题,我只是不知道为什么。不管出于什么原因,fclose(out)工作得很好。

最佳答案

你应该做的第一件事是:

in = fopen(argv[1], "r");
if (in == NULL)
    printf ("Could not open file '%s'\n" argv[1]);
else
    fclose(in);

在您的原始代码中,不能保证fopen实际工作,在这种情况下,它将返回NULL,并且fclose将不会被定义为行为。

关于c - fclose(in)分段故障,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15726223/

10-10 23:16