我正在编写用于编码字符的小程序,我在阅读NUL字符时遇到问题,也许还有其他问题。我的问题是这段代码中的getchar以某种方式忽略了CTRL + @输入的NUL字符。
function logout() {
session_destroy();
redirect('/login');
}
但是这段代码可以正常工作并正确读取NUL字符。
while ((numberOfRead < 40) && (character = getchar()) && (character != EOF) && (character != '\n')) { ... }
导致问题的区别是什么?感谢您对此行为的任何解释。代码在Windows 8.1上在gcc 4.7.1下进行了测试
答案 0 :(得分:1)
下面:
while (... && (character = getchar()) && ...) ...
您使用character
的值作为真值。当读取character
是值为0的空字符时,此条件为false。
您可以执行以下操作:
while (numberOfRead < 40
&& (character = getchar()) != EOF && character != '\n') { ... }
但是我发现你的第二个变体getchar
在条件之外更具可读性。