我试图打印出实际的\ t和\ b,当我从输入中获取这些动作。
int main()
{
int input, specialChar;
while ((input = getchar()) != EOF)
specialChar = 0;
{
if (input == '\t')
{
putchar('\\');
putchar('t');
specialChar = 1;
}
是putchar('t');不要打印出“t”?
if (input == '\b')
{
putchar('\\');
putchar('b');
specialChar = 1;
}
if (specialChar == 0)
putchar(input);
}
return 0;
}
你能告诉我为什么我会得到“\ 377”吗?
答案 0 :(得分:2)
因为你的循环是:
while ((input = getchar()) != EOF)
specialChar = 0;
然后,当您退出循环时,您将进入:
{
if (input == '\t')
{
putchar('\\');
putchar('t');
specialChar = 1;
}
这意味着你可以到达:
if (specialChar == 0)
putchar(input);
没有" EOF"在输入中,作为字符为0xff,255或0377分别为十六进制,十进制和八进制。
移动大括号,使其覆盖整个循环!