C语言初阶之转义字符

这篇具有很好参考价值的文章主要介绍了C语言初阶之转义字符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言初阶之转义字符

一、什么是转义字符

转义字符(Escape character),所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C语言中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符;在平常的代码编写中,printf函数经常会用到。
转义字符虽然由两个及两个以上的字符构成,但它表示的却是单个字符
简单转义字符(Simple escape sequence)

转义字符 含义 说明
\0 空字符(NULL 在c语言中代表“字符串结束符”
\a 警报符(alert) 发出听觉或视觉上的警报
\b 退格符(backspace) 将当前位置移到前一列
\f 换页符(form feed) 换页,将当前位置移到下一页开头
\n 换行符(new line) 换行,将当前位置移到下一行开头
\r 回车符(carriage return) 将当前位置移到本行开头
\t 水平制表符(horizontal tab) 将当前位置移动到下一个水平制表位置
\v 垂直制表符(vertical tab) 将当前位置移动到下一个垂直制表位置
\\ 字符\
\? 字符 ?
\’ 字符 ’
\" 字符 "

八进制转义字符(Simple escape sequence)

转义字符 含义 说明
\ddd ddd是3位八进制数 一般来说是在ASCII中的八进制数值为ddd的字符

十六进制转义字符(Simple escape sequence)

转义字符 含义 说明
\xhh hh是2位十六进制数 一般来说是在ASCII中的十六进制数值为hh的字符

二、简单转义字符

1、空字符

空字符\0
它的存在是为了告诉编译器’\0’是空字符,而不是字符0.
字符’0’对应的ASCII码为00110000,而’\0’对应的ASCII码为00000000;在C语言中通常用一个字符数组来存放字符串,’\0’ 是字符串的结束标志,任何字符串之后都会自动加上’\0’。如果字符串末尾少了‘\0’转义字符,则在输出时可能会出现乱码问题。
比如:

int main() {
    char str1[] = {"abc"};
    char str2[] = {"abc\0"};
    return 0;
}

上述代码中str1str2在打印输出时均为abc
包括在使用库函数strlen计算时,str1str2均为3
原因是printf函数与strlen函数均认定’\0’ 是字符串的结束标志;
但在使用单引号进行赋值的时候,这两个函数可能会出现一些问题。
比如:

int main() {
    char str1[] = {'a','b','c'};
    char str2[] = {'a','b','c','\0'};
    return 0;
}

在上述代码中如果我们使用printf函数与strlen函数进行打印输出和计算str1时,
该数据类型会丢失’\0’ ,此时打印的时候可能会出现乱码情况和计算出随机值的情况,
这时如果非要用单引号进行赋值的话,建议使用str2的写法。

在使用库函数sizeof进行字符串计算时,输出个数会比实际字符个数多1,
比如:

int main() {
    char str[] = {"abc"};
    return 0;
}

在上述代码中,如果使用sizeof函数对字符串str进行运算时,得出的结果应该是4,而不是3,所以如果使用固定值对元素个数进行赋值时,在方括号[]中应该输入的是4,而不是3。

2、警报符

警报符\a
C语言中的转义字符\a(响铃)是在标准输出设备输出字符’\a’时,系统自带的扬声器(或蜂鸣器)会发出“叮”的一声(有些环境不发出声音,只令画面闪烁)

#include <stdio.h>
int main() {
    printf("\a你好");
    return 0;
}

在上述输出代码中输出你好时,你会听见“叮”的一声(不同操作系统提示音可能不同);

3、退格符

退格符\b
输出退格符\b后,当前显示位置就会移动到当前所在行的前一个字符。
并没有规定当前显示位置处于所在行的开头时输出退格符会怎么样,这是因为光标在某些环境下回不到前一行。那么我们怎么运用呢?
比如:

#include <stdio.h>
int main()
{
    printf("12345\n67\b\b\b\b89");
 
    return 0;
}

效果:

12345
89

在上述代码中在12345后使用换行符\n,正常我们使用两个退格符就能达到上述效果,
而在这里我使用了4个,是因为不论使用几个,退格符都不会再向上访问了。

下面我们再写一个有趣的代码:

#include <stdio.h>
#include <Windows.h>
int main() {
    printf("HelloWorld!");
    for (int i = 0; i < 11; i++) {
        Sleep(1000);//每隔一秒
        printf("\b \b");//从后出个消除
        fflush(stdout);//清空缓冲
    }
    return 0;
}

上述代码我们调用一个sleep函数和一个for循环,产生的效果如下:

C语言初阶之转义字符

4、换页符

换页符\f
输出换页符\f后,当前的显示位置就会移动到下一个逻辑页面的开头位置
但在控制台面板中,即使你使用换页符输出,也不会发生任何事情(会多一个空行,肉眼看不见)。
比如:

#include <stdio.h>
int main() {
    printf("你好\f");
    return 0;
}

效果和不输入换页符输出也是一样的。
实际在打印输出需要换页时才会用到换页符

5、换行符

换行符\n
换行符是我们在学习C语言过程中可能经常会用到的转义字符,
输入换行符后,当前显示位置就会移动到下一行的开头
比如:

#include <stdio.h>
int main() {
    printf("你好\n");
    printf("\n");
    printf("程序员");
    return 0;
}

输出结果:

你好

程序员

6、回车符

换行符\r
输出回车符\r后,当前显示位置就会移动到本行开头,灵活应用回车符,我们就能重写已经在画面上显示出来的字符。回车符(‘\r’)和换行符(‘\n’)都是c语言中的一种语言表达方式,前者的作用是输入完一行内容后光标回到当前行的开头却不向下移一行,而后者的作用是跳到下一个新行,输入完一行内容后光标下移一行却不会移到这一行的开头。
我们以下面代码为例:

#include <stdio.h>
#include <Windows.h>
int main()
{
    printf("你是谁");
    fflush(stdout);//清空缓冲

    Sleep(2000);//间隔两秒
    printf("\r程序员");

    return 0;
}

效果:

你是谁

两秒后

程序员

可以看到这段代码可以直接清除本行(调用了fflush)再重新输出,而回车符的作用则是把光标重定位到开头,达到辅助效果;但在这里需要注意的是,如果新输出的字符串比原先显示的字符串短,那么原先显示的字符就不会消失,始终留在原位。
比如:

#include <stdio.h>
#include <Windows.h>

int main()
{
    printf("你是谁");
    fflush(stdout);

    Sleep(2000);
    printf("\r程序");

    return 0;
}

则输出是:

你是谁

两秒后

程序谁

7、水平制表符

水平制表符\t
输出水平制表符\t后,当前显示位置就会移动到本行的下一个水平制表位置
没有规定当前位置位于或超过本行最后的水平制表位置时程序该如何运作,
水平制表位置要取决于操作系统的环境,
有些环境把水平制表位置设定在每行开头8位的地方,
还有些环境把水平制表位置设定在距每行开头4位的地方。
如下面代码所示:

#include<stdio.h>
void main() {
	printf("1234567812345678\n"); 
	printf("\ta\n");                    
	printf("1234\ta\n");                           
	printf("12345678\ta\n");             
	return 0;
}

输出结果:
C语言初阶之转义字符
在这段代码中,我们可以很好的观察到,在我的操作系统中,一个水平制表位是8个空格

8、垂直制表符

垂直制表符\v
输出垂直制表符\v后,当前显示位置就会移动到下一个垂直制表位置中最开始的位置
没有规定当前位置位于或超过本行最后的垂直制表位置时程序该如何运作。
如下面代码所示:

#include<stdio.h>
void main() {
		printf("123\v456"); 
		return 0;
}

理论效果:

123
   456

为什么说是理论效果,因为在控制台输出的时候只会有换行效果(手动滑稽)
垂直制表符\v和换页符 f一样,都主要在打印输出时使用

9、反斜杠字符

反斜杠表符 \\
我们用转义字符\\来表示反斜杠字符\
别问为什么,一个输出不了,转义字符用它定义,输出自己当然得再加一个嘛
这个没什么好讲的。。。

10、问号字符

问号字符 \?
表示问号的转义字符是\?。因为可以不用\? 而只用?,
所以基本上没什么人使用这个转义字符,这个和上面那个一样无聊。。。

11、单引号字符和双引号字符

单引号字符\’和双引号字符\”
表示单引号和双引号的转义字符分别是\’和\”。
在字符串常量中,双引号必须用\”来表示,表示字符串12"3的字符串常量就是"12\”3"。
另外,单引号可以用’和\’这两种方式来表示,
单引号的字符常量写为’ \’ ‘(不能写为’‘’)。表示双引号的字符常量则可以写为’ " ‘或’ \" '。
(这单双引号快给我搞吐了)
这个原理有点像上面的反斜杠,因为本身和printf函数里的双引号冲突
比如下面代码:

#include<stdio.h>
void main() {
	printf("关于字符串常量和字符常量。\n");

	printf("双引号"); 
	putchar('"');
	printf("\n");
	printf("用双引号括起来的\"123\"是字符串常量。\n");//双引号的体现

	printf("单引号"); 
	putchar('\'');
	printf("\n");
	printf("用单引号括起来的'1'是字符常量。\n");//单引号的体现

	return 0;
}

输出结果:

关于字符串常量和字符常量。
双引号"
用双引号括起来的"123"是字符串常量。
单引号'
用单引号括起来的'1'是字符常量。

三 、八进制转义字符

八进制转义字符\ddd
八进制转义字符的格式就是\ddd(有些书上是\ooo,这个字母本身替代的是八进制数,所以用什么字母替代不重要),d的范围是0~7,用1到3位八进制数来表示。
举个例子:

#include<stdio.h>
void main() {
	printf("%c\n", '\141');
	printf("%d", '\141');
	return 0;
}

输出结果是

a
97

第一个打印输出函数调用的是单个字符格式化符号,在ASCII中八进制数141是字母a;
第二个打印输出函数调用的是十进制整型数据格式化符号,八进制数141转为十进制数就是97。

四、十六进制转义字符

十六进制转义字符\xhh
十六进制转义字符的格式是\xhh(和八进制转义字符描述类似)
\x是固定的,h的范围是0-F,用任意位数的十六进制数来表示。
举个例子:

#include<stdio.h>
void main() {
	printf("%c\n", '\x2B');
	printf("%d", '\x2B');
	return 0;
}

输出结果是

+
43

第一个打印输出函数调用的是单个字符格式化符号,在ASCII中十六进制数2B是字符+;
第二个打印输出函数调用的是十进制整型数据格式化符号,十六进制数2B转为十进制数就是43。

ASCII表对应可以看这:ASCII码一览表

使用八进制和十六进制转义字符的时候一定要注意它的值的范围,它们的本质是表示那些不能显示的ASCII字符,标准ASCII码表码值的最大值为127,拓展ASCII码表码值的最大值到255.当转义字符的表示值过大时,此时的转义字符就没有实际的意义了。

五、总结

这就是所有的转义字符的介绍了,文章有些专业术语介绍来自《明解C语言中级篇》,作者也非常推荐大家看这本书,非常适合小白入门C语言。

制作不易,看了这么多,给个一键三连呦!
如有不正之处,敬请指出,感谢你的来访!!!😊😊😊文章来源地址https://www.toymoban.com/news/detail-409217.html

到了这里,关于C语言初阶之转义字符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言初阶之扫雷代码详解(含递归展开)

    主要分为下面几个过程: 1、建立棋盘 2、初始化棋盘 3、设置棋盘雷数 4、打印棋盘 5、玩家找雷 6、判定胜负 文件名:game.h 代码如下: 在game头文件中,首先包含会使用到的库头文件,这里的ROW以及COL是雷区的行和列大小,也就是说这是玩家实际能看到的行数及列数,而RO

    2024年02月03日
    浏览(26)
  • 数据结构初阶之基础二叉树(C语言实现)

    📃 博客主页: 小镇敲码人 💞 热门专栏:数据结构与算法 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧月,独傲天下百坚强。 男儿应有龙腾志,盖世一意转洪荒。 莫使此生无痕度,终归人间一捧黄。🍎🍎🍎 ❤️ 什么

    2024年03月19日
    浏览(32)
  • 第11章:C语言数据结构与算法初阶之排序

    排序是一种非常重要的算法。 排序 :所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,

    2024年02月12日
    浏览(35)
  • Python语言转义字符简介

    Python语言转义字符简介 转义字符(Escape Character)即标志着转义序列(escape sequence)开始的那个字符。 一些程序设计语言中就规定了一个用于转义的字符 ,它后面的字符不能按照这些字符的字面意义解释——转义字符开头的该字符序列具有不同于该字符序列单独出现(没有

    2023年04月18日
    浏览(35)
  • c语言转义字符例子

    #include stdio.h #include string.h /* utf-8 */ #define UTF_V        \\\"342224202\\\"         /* U+2502, Vertical line drawing char */ #define UTF_VR        \\\"342224234\\\"        /* U+251C, Vertical and right */ #define UTF_H        \\\"342224200\\\"         /* U+2500, Horizontal */ #define UTF_UR        \\\"342224

    2024年02月09日
    浏览(33)
  • C语言——转义字符

    ​ 转义字符(Escape character),所有的ASCII码都可以用“”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加\\\"\\\"来表示常见的那些不能显示的ASCII字符,如\\0,t,n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。 转义字符 释义 ? 在书写连续

    2023年04月09日
    浏览(25)
  • C 语言的转义字符

    转义字符也叫转移序列,包含如下: 转移序列 \\0oo 和 xhh 是 ASCII 码的特殊表示。 八进制数示例: 代码: 结果: 电脑响了一声。 \\\'\\007\\\' 中的 0 可以省略一个或多个,或全部省略。代码示例: 结果一样,还是电脑响了一声。 如果电脑没有可以发出蜂鸣的硬件,则该程序不会有

    2024年02月14日
    浏览(31)
  • 【c语言】c语言转义字符详解

    🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:c语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 引言 在C语言中,转义字符是一种特殊的字符序列,用于表示一些无法直接输入或打印的字符,如换

    2024年02月21日
    浏览(31)
  • 【C语言】转义字符+结构语句

    一,什么是转义字符 1.1转义字符的重要性?  二,了解一下转义字符有那些 三,精讲转义字符 3.1转义字符n 3.2转义字符?  3.3转义字符 ‘和\\\"  3.3转义字符 \\\\  3.4转义字符 a,r,n  3.5转义字符 b 3.6转义字符 f和v 3.7转义字符 t  3.8转义字符ddd   3.9转义字符xdd 四,

    2024年02月15日
    浏览(26)
  • C语言-print字符串打印-转义字符妙用

    这里有两个有关打印的小知识 打印的字符串内容由两部分组成: 可见字符、转义字符 ;各种字母、数字、以及空格,均属于可见字符,“”等属于转义字符 举例: 1.直接print里面打印内容,内容直接出现 2.这里想将一行字符串拆开来展示,直接打印行不通 3.这里要用到转义

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包