if ( fgets( line, sizeof(line), stdin ) == (char*) 0 )...
我不明白这条线的作用,谁都知道?
答案 0 :(得分:4)
这是一种编写测试的奇怪方法,用于返回空指针,指示fgets()
中的错误。
我会这样写:
if (!fgets(line, sizeof(line), stdin))
答案 1 :(得分:3)
(char*) 0
不是空字符,而是指向地址0处字符的指针。
包含值0的字符将是:
(char) 0
答案 2 :(得分:2)
它表示指向char的空指针。如果用NULL替换(char *)0,它将是相同的。在这种特殊情况下,它正在检查是否没有更多内容可以从标准输入读取。我认为这只是一种神秘的方式,并展示了一些壮观而美丽的特征。如果用NULL替换它,则可以在不改变语义的情况下获得可读性。
答案 3 :(得分:1)
该行检查fgets
是否返回0.转换为char*
只是为了匹配fgets
的返回类型:
char * fgets ( char * str, int num, FILE * stream );
但如果删除0,则隐式转换为char*
。
如果您需要有关fgets
外观here
答案 4 :(得分:1)
(char *)0创建“null”指针。所以你看到fgets的值是否为null。
fgets的文档说明当出现错误或者你已经到达文件末尾时它返回null。
完整的陈述似乎在检查你是否在文件的末尾,如果是这样的话(尽管这是猜测)。
答案 5 :(得分:-1)
只是检查空字符指针的fgets结果。
返回值
成功,功能 返回相同的str参数。如果 遇到文件结尾,没有 字符已被阅读, str的内容保持不变,a 返回null指针。
如果有错误 发生时,返回一个空指针。
使用ferror或feof进行检查 是否发生错误或 达到了文件结束。