我已经通过评论减少了程序,直至:
#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(in),我只是不知道为什么。无论出于何种原因,fclose(out)都可以正常工作。
答案 0 :(得分:3)
你要做的第一件事就是:
in = fopen(argv[1], "r");
if (in == NULL)
printf ("Could not open file '%s'\n" argv[1]);
else
fclose(in);
您的原始代码无法保证fopen
实际上正在运行,在这种情况下,它将返回NULL并且fclose
将不会被定义为行为。