0

以下代码给了我一个段错误,我不知道为什么。这是我的 main 函数中唯一的代码,而不是最后返回 0。此外,它成功打印“fr opens”。

//create file pointer and open file
FILE *fr;
fr = fopen("IntegerArray.txt", "r");

if(fr = NULL){
        printf("fr is null\n");
}
else{
        printf("fr opened\n");
}

int ch = fgetc(fr);
ch = fgetc(fr);
4

3 回答 3

5

您将 NULL 分配给您打开的 FILE*。

改变

if(fr = NULL){

if(fr == NULL){
于 2013-02-06T11:25:22.200 回答
1

fr = NULL的条件下if是一项任务。您可能意味着比较:fr == NULL.

于 2013-02-06T11:26:05.413 回答
0

你得到了它的这一部分:

if (fr = NULL)

应该:

if (fr == NULL)

或者更好:

if (NULL == fr)

但是,我只是想就您的观点提一下:Also, it successfully prints "fr opened."由于意外分配,它再次打印了该内容。

if (fr = NULL)

首先设置frNULL,所以检查基本上变成了:

if(fr)

随着它frNULL评估if(0),因此您看到了else“fr 打开”消息。

于 2013-02-06T12:21:43.507 回答