【愿成其身】[3]转义字符 – 格式化输出

/ 0评 / 0

本篇文章讲解题目:打印键盘

推荐先独立进行解题尝试,然后再阅读本篇讲解!


题目要求按照顺序输出键盘上的字符。

这一道题并非难题,然而确实好多人都容易被坑到。

其中的原因就是涉及到了转义字符的知识,所以当输出 \ 和 " 时,如果不注意的话便容易出现问题。

错误代码示例:

#include<stdio.h>
int main() {
	printf("`1234567890-=");
	printf("~!@#$%^&*()_+");
	printf("qwertyuiop[]\");
	printf("QWERTYUIOP {}|");
	printf("asdfghjkl; '");
	printf("ASDFGHJKL:"");
	printf("zxcvbnm,./");
	printf("ZXCVBNM<>?");
	return 0;
}

这段代码编译会发现报错。

为什么呢?

在C语言中,输出时为了表示如换行,缩进等普通字符无法表示的字符时,引入了“转义字符”这一概念。


因此如果直接输出\,便会把它与后边字符加在一起理解为转义字符,如果想输出\则可表示为\\。

同理如果直接打",则会认为是提前把""结束了,如果想输出字符",则需要表示为\"。

所以按照这个表进行改动。


这个时候运行发现还是和结果不相同,因为所输出的字符全部在同一行。

而我们想让它们一行输出一行,也就是“换行”。不过,多个printf是无效的,因为它只会“忠实”地执行你的代码。所以对于每一个printf来说,输出结束,它的“光标”是在输出之后的字符后面的。

现在我们回忆起来,当我们自己输入完一行之后,我们会按回车键来使光标移到下一行。那么再看上面的表,发现换行键的转义字符为 \n 。

所以便可以完整的写出正确代码,就是在原代码的基础上,每输出一行便在后面加一个 \n 即可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注