C FGET中(文件*)fp和fp之间的差异?

C FGET中(文件*)fp和fp之间的差异?,c,C,我一直在寻找一些用C语言读取文件的例子,我看到了这两个例子 fgets(buff,255,(FILE*)fp); 及 假设fp是前面定义的文件指针“file*fp;” 这有什么区别吗?或者编译器只是将一个转换成另一个 我还注意到在一些读取整个文件的“While”循环中,有些循环说While(fgets(buff,255,fp))(假设whiles为真),有些循环会专门检查While(fgets(buff,255,fp)!=NULL) “真正”的人不应该失败吗?因为如果成功它会返回buff,如果

我一直在寻找一些用C语言读取文件的例子,我看到了这两个例子

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

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

这有什么区别吗?或者编译器只是将一个转换成另一个

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

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


谢谢

在条件语句中,非空指针被视为true。所以,

while(fgets(buff,255,fp))
相当于

while(fgets(buff,255,fp)!=NULL)
另外,
(文件*)fp
也是一个类型转换。因为
fp
已经声明为
FILE*fp强制转换无效

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