fclose(in)分割错误

时间:2013-03-31 04:07:14

标签: c

我已经通过评论减少了程序,直至:

#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)都可以正常工作。

1 个答案:

答案 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将不会被定义为行为。