c - 编写一个程序将输入复制到输出

标签 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);
    }

}

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

最佳答案

两个问题。第一:

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

您应该将 getchar() 的返回值与 EOF 进行比较。在这里,您将 cEOF 进行比较。这是不正确的,因为 cchar,而 getchar 返回 int。因此,您应该将 intEOF 进行比较,并将 charEOF 进行比较。这是错误的。

第二:

    if ((c = getchar()) == '\t'){

为什么再次调用getchar?您不想阅读另一个字符。

关于c - 编写一个程序将输入复制到输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728692/

相关文章:

c - 将一个数字范围映射到另一个

用递归计算零不断崩溃

c - 如何查看存储的字符串

Python AES解密具有不同字符的字符串结尾

c - 如何在 C 中对 'æ' 、 'ø' 和 'å' 进行操作

c - 为什么我的程序返回我没有输入的字符? (纯C)

c - 如何在 C 中将 char* 转换为 char[]

c - strftime 本周第一天

c++ - 将字符串转换为 char* 问题

c++ - 检查具有特定格式的字符数组值