[英]Why getchar() works int these two cases differently?
我正在编写用于编码字符的小程序,但在读取NUL字符时可能还有其他问题。 我的问题是这段代码中的getchar会忽略CTRL + @输入的NUL字符。
while ((numberOfRead < 40) && (character = getchar()) && (character != EOF) && (character != '\n')) { ... }
但是此代码可以正常工作,并且可以正确读取NUL字符。
character = getchar();
while ((numberOfRead < 40) && (character != EOF) && (character != '\n')) {
numberOfChars++;
...
character = getchar();
}
造成问题的区别是什么? 感谢您对此行为的任何解释。 代码已在Windows 8.1的gcc 4.7.1下进行了测试
这里:
while (... && (character = getchar()) && ...) ...
您将character
的值用作真实值。 当读取的character
是值为0的空字符时,此条件为false。
您可以执行以下操作:
while (numberOfRead < 40
&& (character = getchar()) != EOF && character != '\n') { ... }
但我发现条件之外的带有getchar
第二种变体更易读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.