【问题标题】:Difference between (FILE*)fp and fp in fgets?fgets中(FILE *)fp和fp之间的区别?
【发布时间】:2017-01-30 02:44:28
【问题描述】:

我一直在查找一些从 C 中读取文件的示例,我都看到了

fgets(buff,255,(FILE*)fp);

fgets(buff,255,fp);

假设 fp 是前面定义的文件指针“FILE *fp;

这有什么不同吗?还是编译器只是将一个转换为另一个?

我还注意到在一些读取整个文件的“While”循环中,有些人说 while(fgets(buff,255,fp)) (所以假设它是真的)有些人会专门检查 while(fgets(buff,255 ,fp)!= NULL)。

“真正的”不应该失败吗?因为如果成功则返回buff,失败则返回null?

谢谢

【问题讨论】:

    标签: c


    【解决方案1】:

    非空指针在条件语句中被视为真。因此,

    while(fgets(buff,255,fp))
    

    等价于

    while(fgets(buff,255,fp)!=NULL)
    

    另外,(FILE*)fp 是一种类型转换。由于fp 已声明为FILE *fp;,因此强制转换无效。

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2021-03-14
      相关资源
      最近更新 更多