我正在阅读 K&R 的书,想以我从未尝试过的方式测试 printf() 和 putchar() 函数。我遇到了几个意外事件,并想听听更有经验的程序员为什么会发生这种情况。
char c;
while((c = getchar()) != EOF) {
//put char(c);
printf("%d your character was.\n", c);
}
- 如何在输入流(getchar() 或 scanf() 函数)中获得 EOF(文件结尾)?getchar()/scanf() 函数无法识别的意外键会产生它吗?
- 在我的书中,它说 c 必须是一个整数,因为它需要存储 EOF 并且变量必须足够大以容纳 EOF 可以容纳的任何可能的字符。这对我来说没有意义,因为 EOF 是一个值为 -1 的常量整数,甚至 char 也可以存储。谁能澄清这是什么意思?
- 当我向 putchar() 函数发送“hello”或“hello”时会发生什么?它期望得到一个整数,但如果我发送后一个字符串或字符序列,则返回奇怪的输出,例如EE或oo 。
- 为什么当我使用上面编写的 printf() 函数时,我得到两个输出?一个是我输入的,另一个是整数,在 ASCII 中是行尾。它是否会产生第二个输出,因为我按 Enter 键,它假定它是第二个字符?
谢谢。