1

当我从输入中获得这些动作时,我试图打印出实际的 \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”吗?

4

1 回答 1

2

因为你的循环是:

    while ((input = getchar()) != EOF)
        specialChar = 0;

然后,当您退出循环时,您可以:

    {

        if (input == '\t')

        {
            putchar('\\');
            putchar('t');  
            specialChar = 1;
        }

这意味着您可以:

    if (specialChar == 0)
        putchar(input);

在输入中带有“EOF”,作为一个字符,分别是十六进制、十进制和八进制的 0xff、255 或 0377。

移动你的牙套,让它覆盖整个循环!

于 2013-01-12T21:52:46.043 回答