我一直在查找从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?
由于
答案 0 :(得分:3)
在条件语句中将非空指针视为true。因此,
while(fgets(buff,255,fp))
相当于
while(fgets(buff,255,fp)!=NULL)
此外,(FILE*)fp
是一个类型转换。由于fp
已被声明为FILE *fp;
,因此演员表无效。