这是我程序的一个片段
#include<stdio.h>
#include<conio.h>
int main(void)
{
int c;
while ((c = getch()) != EOF)
{
if (c == '\t')
{
putchar('\\');
putchar('t');
}
else if (c == '\b')
{
putchar('\\');
putchar('b');
}
else if (c == '\\')
{
putchar('\\');
putchar('\\');
}
else if (c == '\r')
{
puts("\\n");
// putchar('\n');
}
else{
putchar(c);
}
}
return 0;
}
我想在输入EOF时终止我的输入,但是当我输入^ Z时我只得到这个: 那么如何输入^ Z来终止输入?
答案 0 :(得分:3)
您的程序运作正常......但getch
并不能完全符合您的预期。
getch
(来自conio.h)和getchar
(来自stdio.h)一次只获得一个字符,但不是同一级别。 getchar
更高级别,所以:
Ctrl-C
中断(更准确地说Ctrl-C
被视为SIG_INT信号)Ctrl-D
上翻译特殊字符Ctrl-Z
作为EOF 另一方面,getch
是低级别的(并且存在于Microsoft系统中但不是标准C):
Ctrl-C
和Ctrl-Z
Ctrl-Break
使用getch
的所有示例都是相同的:你定义输入字符的结尾并手动测试它,没有神奇的EOF。