fgets,优先级问题导致Segmentation fault

本文通过一个实例分析了由于运算符优先级问题导致的Segmentation fault。代码中的错误在于误用if语句,使得fpin被赋值为NULL,而非打开文件的指针。修正if语句的括号后,问题得到解决, fgets能够正常从文件读取数据。
摘要由CSDN通过智能技术生成

首先,看段代码

 

 1 #include <stdio.h>

  2 
  3 int main()
  4 {
  5     char buffer[BUFSIZ+1];
  6     FILE *fpin;
  7 
  8     if((fpin = fopen("test","r") == NULL))
  9     {
 10         printf("can't open test.\n");
 11         return 1;
 12     }
 13 
 14     while(fgets(buffer,BUFSIZ,fpin) != NULL)
 15     {
 16         if(fputs(buffer,stdout) == EOF)
 17         {
 18             printf("fputs error to pipe.\n");
 19             return 1;
 20         }
 21     }

 22 }

这段代码运行会产生段错误:Segmentation fault

经过调试gdb调试发现段错误是第14行代码处 fgets(buffer,BUFSIZ,fpin) 产生的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值