题目:编写一个将输入复制到输出的程序,并将其中的制表符替换为t,把回退符替换为b,把反斜杠替换为\。这样可以将制表符和回退符以可见的方式显示出来。
自我解答:
#includeint main() { int c; while((c = getchar()) != EOF) { if(c == 't') { putchar('\'); putchar('t'); } else if(c == 'b') { putchar('\'); putchar('b'); } else if(c == '\') { putchar('\'); putchar('\'); } else putchar(c); } }
打印反斜杠,用转义字符\来表示
运行结果:
hello world hellotworld\
补充(2021.10.13):
打印t,可以使用printf("\t")实现
打印\,可以使用printf("\\")实现
参考答案:
#includeint main() { int c; while((c = getchar()) != EOF) { if(c == 't') printf("\t"); if(c == 'b') printf("\b"); if(c == '\') printf("\\"); if(c != 'b') if(c != 't') if(c != '\') putchar(c); } return 0; }
输入中的字符可以是一个制表符、一个回退符、一个反斜杠或者其他任何字符。如果输入是一个制表符,我们就把它替换成t;如果输入是一个回退符,我们就把它替换成b;如果输入是一个反斜杠,我们就把它替换为\;其他字符则按原样输出。
在C语言中,反斜杠是用“\”来表示的。因此,如果我们想输出两个反斜杠,就必须把字符串“\\”传递给printf函数。
对if-else语句的介绍最早出现在教材的第14页,下面是使用了这一语法结构的实现方法:
#includeint main() { int c; while((c = getchar()) != EOF) { if(c == 't') printf("\t"); else if(c == 'b') printf("\b"); else if(c == '\') printf("\\"); else putchar(c); } return 0; }
思考:输入流中的b是什么意思



