1

我已将带有注释的程序简化为:

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

4

1 回答 1

3

您应该做的第一件事是:

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

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

于 2013-03-31T04:10:51.473 回答