C:fgetc给出了segfault

时间:2013-02-06 11:23:42

标签: c file-io segmentation-fault

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

//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);

3 个答案:

答案 0 :(得分:5)

您正在为您打开的文件*分配NULL。

更改

if(fr = NULL){

if(fr == NULL){

答案 1 :(得分:1)

fr = NULL条件中的if是作业。 您可能需要进行比较:fr == NULL

答案 2 :(得分:0)

你得到了这一部分:

if (fr = NULL)

应该是:

if (fr == NULL)

或更好:

if (NULL == fr)

然而,我只是想我会提到你的观点:Also, it successfully prints "fr opened."由于意外分配,它再次打印出来。

if (fr = NULL)

首先将fr设置为NULL,因此检查基本上成为:

if(fr)

fr NULL评估为if(0),因此您看到了else s“fr opened”消息。