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

为什么putchar打印一些数值而不是我要求它放的字符?,c,C,我试图打印出实际的\t和\b,当我从输入中得到这些操作时 int main() { int input, specialChar; while ((input = getchar()) != EOF) specialChar = 0; { if (input == '\t') { putchar('\\');

我试图打印出实际的\t和\b,当我从输入中得到这些操作时

 int main()

    {

        int input, specialChar;

        while ((input = getchar()) != EOF)

            specialChar = 0;

        {

            if (input == '\t')

            {
                putchar('\\');
                putchar('t');  
                specialChar = 1;
            }
是putchar('t');不想打印出“t”

你能告诉我为什么取而代之的是“\377”吗

因为您的循环是:

    while ((input = getchar()) != EOF)
        specialChar = 0;
然后,当您退出循环时,您可以:

    {

        if (input == '\t')

        {
            putchar('\\');
            putchar('t');  
            specialChar = 1;
        }
这意味着您可以到达:

    if (specialChar == 0)
        putchar(input);
输入中带有一个“EOF”,作为一个字符,它分别是0xff、255或0377(十六进制、十进制和八进制)


移动你的背带,使其覆盖整个环

你的while循环正确吗?
specialChar=0
应该放在大括号内吗?
    if (specialChar == 0)
        putchar(input);