我已经用评论将程序缩减为:
#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/