编写程序以将输入复制到输出

时间:2019-06-24 00:41:45

标签: c char

我正在尝试编写一个将其输入复制到其输出的程序。我假设如果给我以下字符串:“ Hello I am / c”,它应该输出:“ Hello \ t am \ c”我正确吗?

我尝试在线阅读有关stdio.h库的信息。

#include <stdio.h>
/* Write a program to copy its input to its output, replacing each tab by \t, each backspace by \b, and each backslash by \\. This makes tabs and backspaces visible in an unambigous way.*/

int main()
{
    char c;

    while ((c = getchar()) != EOF){

        if ((c = getchar()) == '\t'){
            putchar('\t');
        }
        if (c == '\b'){
            puts("\b");
        }
        if (c == '\\'){
            puts("\\");
        }

        putchar(c);
    }

}

请帮助我进一步理解该问题,并解释为什么我的代码不起作用。

2 个答案:

答案 0 :(得分:2)

两个问题。首先:

Vuetify 1.5.14

您应该将function doGet(e) { var spanish = LanguageApp.translate('This is a test', 'en', 'ar'); return ContentService .createTextOutput(spanish); } while ((c = getchar()) != EOF){ 的返回值进行比较。在这里,您将getchar()EOF进行比较。这是不正确的,因为cEOF,而c返回了char。因此,您应该将getcharint进行比较,并将intEOF进行比较。错了。

第二:

char

您为什么再次打EOF?您不想读取其他字符。

答案 1 :(得分:-1)

#include <stdio.h>
/* Write a program to copy its input to its output, replacing each tab by \t, each backspace by \b, and each backslash by \\. This makes tabs and backspaces visible in an unambigous way.*/
// c is a char and getchar returns an int
int main()
{
    char c;

    while ((c = getchar()) != EOF)
    {

        if (c == '\t'){
            //putchar('\t');
            printf("\\t");
        }
        else if (c == '\b'){
            printf("//b");
            //puts("\b");
        }
        else if (c == '\\'){
            printf("\\\\");
            // no, this is gay(Ruby code) -> puts("\\");
        } else  {

        putchar(c);
        }
    }

}

我的代码很相似-我只是忘记了我也可以只用C语言的``printf()`来代替使用更严格的功能putchar()。