我正在编写用于编码字符的小程序,我在读取 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 下