fgets中的(FILE *)fp和fp之间的差异?

时间:2017-01-30 02:44:28

标签: c

我一直在查找从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?

由于

1 个答案:

答案 0 :(得分:3)

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

while(fgets(buff,255,fp))

相当于

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

此外,(FILE*)fp是一个类型转换。由于fp已被声明为FILE *fp;,因此演员表无效。