(char *)0在c中的含义是什么?

if ( fgets( line, sizeof(line), stdin ) == (char*) 0 )... 

我不明白这条线的作用,谁知道呢?

 (char*) 0 

不是空字符,而是指向地址0处字符的指针。

包含值0的字符将是:

 (char) 0 

这是一种编写测试的奇怪方法,用于返回空指针,指示fgets()的错误。

我这样写的:

 if (!fgets(line, sizeof(line), stdin)) 

它表示指向char的空指针。 如果用NULL替换(char *)0,它将是相同的。 在这种特殊情况下,它正在检查是否没有更多内容可以从标准输入读取。 我认为这只是一种神秘的方式,并展示了一些壮观而美丽的特征。 如果用NULL替换它,则可以在不改变语义的情况下获得可读性。

该行检查fgets返回0.转换为char*只是为了匹配fgets的返回类型:

 char * fgets ( char * str, int num, FILE * stream ); 

但是如果删除它,0会隐式转换为char*

如果您需要有关fgets更多信息,请查看此处

(char *)0创建“null”指针。 所以你看到fgets的值是否为null。

fgets的文档声明当出现错误或者您已到达文件末尾时它返回null。

完整的陈述似乎是在检查你是否在文件的末尾,如果是这样的话(尽管这是猜测)。

它只是检查fgets的结果为null字符指针。

根据cplusplus.com

回报价值

成功时,该函数返回相同的str参数。 如果遇到文件结尾且未读取任何字符,则str的内容保持不变,并返回空指针。

如果发生错误,则返回空指针。

使用ferror或feof检查是否发生错误或是否已达到文件结尾。