这两个语句之间的区别是什么?哪个是正确的语句?应该使用什么?
fp是使用的文件指针。

if(fp!= '\n')

得到警告
C4047: '!=' : 'FILE *' differs in levels of indirection from 'int'


if(fp!= NULL)

没有收到任何警告。
完整的代码片段如下
if(fp!= NULL)
    {
        fgets(mystring,BUFSIZ,fp);
        puts(mystring);
    }

最佳答案

这两个语句之间的区别是什么?哪个是正确的语句?应该使用什么?
关于区别:
fp != '\n'尝试将指针与整数进行比较。这毫无意义。
fp != NULL检查fp是否为空指针。这是明智的做法。
关于哪个是正确的:
这个问题假设其中一个是正确的。(但fp != '\n'绝对不正确。)
关于应该使用什么:
这取决于你想做什么。
此代码:

fgets(mystring,BUFSIZ,fp);
puts(mystring);

也是错误的,因为您正在忽略fgets的返回值,该值将告诉您fgets是否成功,因此mystring是否设置为有效字符串。

关于c - 文件IO中的两个语句有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14377075/

10-14 08:27