这两个语句之间的区别是什么?哪个是正确的语句?应该使用什么?
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/