为什么putchar打印一些数值而不是我要求它放入的char?

时间:2013-01-12 21:48:56

标签: c

我试图打印出实际的\ 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”吗?

1 个答案:

答案 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分别为十六进制,十进制和八进制。

移动大括号,使其覆盖整个循环!