C 语言转义字符:告别编译错误,玩转字符串!

        在 C 语言的世界里,字符串是不可或缺的一部分。但你是否遇到过这样的困境:想在字符串中输出双引号、反斜杠,或者换行,却总是出现编译错误,或者输出结果不如预期? 别担心,C 语言的转义字符就是解决这些问题的利器!

一、引言

    个人认为,转义字符就是改变字符原本的意思。

    简单来说,转义字符就是用反斜杠 \ 开头的字符序列,它们代表着一些特殊的字符或者控制指令。因为某些字符在 C 语言中有特殊的含义(例如双引号表示字符串的开始和结束),所以不能直接在字符串中使用。转义字符的出现,就是为了让我们能够在字符串中表示这些特殊的字符。比如,我想打印一个双引号就得这样子:

printf("\"");

如果不添加 \ 的话,编译器会默认第一个和第二个双引号是一组语法结构,第三个双引号则会报错!


二、常见转义字符一览

转义字符表示含义ASCII 码
\n换行10
\'表示一个单引号39
\"表示一个双引号34
\\表示一个反斜杠92
\t水平制表符9
\a报警符,让电脑发出“登登”的声音7
\b退格符,光标往回退一格8
\?表示一个问号
\r回车符,光标移动到本行开始的地方13
\v垂直制表符11
\ddd16进制表示的字符
\xdd8进制表示的字符
\0空字符,字符串结束的标志0

 


三、个别转义字符演示

1. \t 水平制表符

光标移动到下一个制表位,一般是4/8个字节,例如:

int main()
{
	printf("123456789012345678901234567890\n");
	printf("\t");
	getchar();
	return 0;
}

 上述代码的运行结果:

可以看到,在VS2022中,一个 \t 会让光标移动8个字节

如果是两个 \t 呢?

运行一下代码:

int main()
{
	printf("123456789012345678901234567890\n");
	printf("\t\t");
	getchar();
	return 0;
}

运行结果:

可以看到,两个 \t 会使光标移动16个字节,那么如果 \t 搭配着字符或者数字会怎么样?让我们一起运行一下代码:

int main()
{
	printf("123456789012345678901234567890\n");
	printf("abcd\t");
	getchar();
	return 0;
}

运行结果:

可以看到,字符的出现并不能改变光标出现在第8个字节的事实,那如果超输入超过8个字节的字符呢?让我们来看下面的代码:

int main()
{
	printf("123456789012345678901234567890\n");
	printf("123456789\t");
	getchar();
	return 0;
}

运行结果:

可以看到,光标跑到第16个字节的位置去了

通过上面的案例,我们可以得出一个结论:在屏幕中有着隐藏的网格,而 \t 的作用就是把光标从当前位置向后移动至下一个隐藏网格的结点处。垂直制表符也是如此,只不过方向由水平变成了竖直而已。

那么,水平制表符 \t 能干啥?当然是用来对齐文本的,尤其是当文本长短不一时,例如:

int main()
{
  printf("张三\t%d\t女\n" , 250411);
  printf("李四\t%d\t女\n" , 250412);
  printf("王麻子\t%d\t男\n" , 20413);
}

运行结果:

2. \b 退格符

\b 能使光标往回退一格,例如:

printf("123456789012345678901234567890\n");
printf("abc\b");
getchar();

运行结果:

可以看到,光标往回退了一格,那如果在 \b 后面在加上一个字符呢?来看看下面的代码:

printf("123456789012345678901234567890\n");
printf("abc\b");
getchar();

运行结果:

可以看到,原本的 c 被1给覆盖了,那么,是不是可以理解为,在光标所在的地方输入字符,新字符会覆盖掉原本的旧字符。

3.\? 表示一个问号

这个转义字符主要是在书写连续多个问号时使用,防止被解析成三字母词,在如今的VS中已经无法验证了

四、总结

掌握 C 语言的转义字符是编写高质量 C 代码的基础。 它可以帮助你处理字符串中的特殊字符,控制输出格式,避免编译错误,让你的代码更加健壮和易于维护。 希望本文能够帮助你更好地理解和运用 C 语言的转义字符,在 C 语言的世界里畅游!

思考题:

如何在 C 语言中输出一个 Windows 风格的路径: C:\My Documents\Important Data

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值