题目:编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替换为\\。这样可以将制表符和回退符以可见的方式显示出来。
自我解答:
#include <stdio.h>
int 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\
hello\tworld\\
补充(2021.10.13):
打印\t,可以使用printf("\\t")实现
打印\\,可以使用printf("\\\\")实现
参考答案:
#include <stdio.h>
/* replace tabs and backspaces with visible characters */
int 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页,下面是使用了这一语法结构的实现方法:
#include <stdio.h>
/* replace tabs and backspaces with visible characters */
int 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是什么意思