C语言转义字符:一文打尽

news2025/6/11 7:03:02

转义字符

    • 1. 前言
    • 2. 预备知识
      • 2.1 打印格式
      • 2.2 进制转换
      • 2.3 ASCII码
    • 3. 什么是转义字符
    • 4. 常见的转义字符
      • 4.1 `\?`
      • 4.2 `\'`
      • 4.3 `\"`
      • 4.4 `\\`
      • 4.5 `\ddd`ddd表示1到3个八进制数字
      • 4.6 `\xdd`dd表示1到2个十六进制数字
      • 4.7 其他转义字符
    • 5. 一道笔试题
    • 6. 一个小插曲

在这里插入图片描述

1. 前言

大家好,我是努力学习游泳的鱼。在字符中,有一类特殊的群体,你经常见到,但它们和你见到的样子可能不一样。它们就是转义字符。阅读这篇文章,你将对它们有更好的了解。

2. 预备知识

2.1 打印格式

我们可以用printf配合%d来打印整型,除此之外还有其他格式。

%d - 打印整型
%s - 打印字符串
%c - 打印字符

#include <stdio.h>

int main()
{
	printf("%d\n", 100);
	printf("%s\n", "abcdef");
	printf("%c\n", 'a');
	
    return 0;
}

2.2 进制转换

为什么十进制的130表示的是130呢?因为130每个数字都有它的权重。其中从右往左,0的权重是100,即13的权重是101,即101的权重是102,即100,计算0×1+3×10+1×100得到130
那么八进制的130转换成十进制是多少呢?同理,从右往左,0的权重是80,即13的权重是81,即81的权重是82,即64,计算0×1+3×8+1×64=0+24+64=88,即八进制的130转换成十进制是88
十六进制数字的转换同理。

2.3 ASCII码

键盘上能敲出来的每个字符都对应一个ASCII码值,比如a97A65等等。

3. 什么是转义字符

转义,即转变了原来的意思。
如果我这么写printf("abcndef");那么屏幕上就会打印出abcndef
如果我在n前面加个\,即printf("abc\ndef");那么屏幕上就会打印abc,然后换行,接下来打印def,此时这个\n的作用就是换行。
n本来的意思就是个字符'n',但加了个\变成\n之后就转变了原来的意思,变成了换行,所以\n是一个转义字符。

4. 常见的转义字符

4.1 \?

在书写连续多个问号时使用,防止他们被解析成三字母词

早期的C语言编译器,存在三字母词。比如说,??)表示]??(表示[
所以如果我写printf("(Are you ok??)");实际打印出来的效果就是(Are you ok]
所以正确的写法是printf("(Are you ok\?\?)");此时的\?就不是一个三字母词里的问号了,而是一个普普通通的问号。

4.2 \'

用于表示字符常量'

如果我们想要打印一个单引号,我们不能写printf("%c", ''');因为前两个单引号会组成一对单引号,第三个单引号就落单了。正确的写法是printf("%c", '\'');此时的\'就不是一对单引号里的单引号了,而是一个普普通通的单引号。

4.3 \"

用于表示一个字符串内部的双引号

明白\'的作用后,\"就很简单了。我们不能写printf("%s", """);而应该写printf("%s", "\"");因为前者的前两个双引号构成一对,第三个双引号就落单了,所以要对双引号进行转义,使其成为一个普普通通的双引号。

4.4 \\

用于表示一个反斜杠,防止它被解释为一个转义序列符。

如果我们想要打印一串路径,我们不能这么写printf("C:\test\test.c");因为\t会被识别为转义字符。正确的写法是printf("C:\\test\\test.c");此时\\的作用是让\不再是转义字符\t里的\,而是一个普普通通的\

写路径时,建议在每个反斜杠前都加个反斜杠。

4.5 \dddddd表示1到3个八进制数字

比如\130代表的是把130这个八进制数字转换成十进制后得到的88作为ASCII码值代表的字符,即'X'

4.6 \xdddd表示1到2个十六进制数字

比如\x31代表的是把31这个十六进制数字转换成十进制后得到的49作为ASCII码值代表的字符,即'1'

4.7 其他转义字符

\a警告字符,蜂鸣
\b退格符
\f进纸符
\0字符串结束标志
\n换行
\r回车
\t水平制表符
\v垂直制表符

5. 一道笔试题

下面的程序输出的结果是什么呢?

#include <stdio.h>
#include <string.h>

int main()
{
	 printf("%d\n", strlen("c:\test\628\test.c"));
	 
	return 0;
}

关键是认出\t是一个转义字符,还有……
\628?
nonono!反斜杠后面跟1到3个八进制数字,八进制数字只有0到7,哪有8呀?所以\62是一个转义字符,不带后面的8玩!
输出的结果是14。

6. 一个小插曲

我在测试\a时,写了一段代码

#include <stdio.h>

int main()
{
	while (1)
	{
		printf("\a");
	}
	
	return 0;
}

结果电脑直接卡住了,结束进程都没用哈哈哈,不得不重启了。
所以:

大家没事不要写这种危险的代码……

不信的话你可以试试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1504114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

giffgaff怎么充值?giffgaff怎么续费?

-性价比高&#xff1a;0月租&#xff0c;免费接收短信&#xff0c;充值一次&#xff0c;接码可以用20年以上&#xff08;仅需半年保号一次&#xff09;&#xff0c;可能是国内性价比最高的接码实体卡&#xff01;-安全&#xff1a;实体卡无须担心因号码被风控&#xff0c;还可以…

使用阿里云服务器搭建网站简单吗?超简单教程

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

BUU [网鼎杯 2020 半决赛]AliceWebsite

BUU [网鼎杯 2020 半决赛]AliceWebsite 开题&#xff1a; hint附件是源码。在index.php中有一个毫无过滤的本地文件包含 <?php $action (isset($_GET[action]) ? $_GET[action] : home.php); if (file_exists($action)) {include $action; } else {echo "File not…

STM32之串口中断接收UART_Start_Receive_IT

网上搜索了好多&#xff0c;都是说主函数增加UART_Receive_IT()函数来着&#xff0c;实际正确的是UART_Start_Receive_IT()函数。 —————————————————— 参考时间&#xff1a;2024年3月9日 Cube版本&#xff1a;STM32CubeMX 6.8.1版本 参考芯片&#xff1a…

基于Kronig-Penney能带模型的MATLAB求解与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Kronig-Penney能带模型的MATLAB求解与仿真.综合利用 MATLAB提供的求解常微分方程、矩阵行列式、代数表达式化简及绘图等函数 ,可使 Kronig-Penney能带模型分析…

【鸿蒙开发】第十八章 Web组件(二)

接上一章节 【鸿蒙开发】第十七章 Web组件&#xff08;一&#xff09; 4 H5与端侧交互 4.1 应用侧调用前端页面函数 应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数。 在下面的示例中&#xff0c;点击应用侧的“runJavaScript”按钮时&#xff0c;来触…

计算机网络(基础篇)复习笔记——体系结构/协议基础(持续更新中......)

目录 1 计算机网络基础相关技术Rip 路由更新操作 2 体系结构(OSI 7层, TCP/IP4层)应用层运输层网络层IPv4无分类域间路由选择 CIDRIPV6 数据链路层循环冗余校验CRC协议设备 物理层传输媒体信道复用技术宽带接入技术数据通信 3 网络局域网(以太网Ethernet) 4 通信过程编码:信道极…

2024年学生服务器申请流程,以阿里云学生机为例

阿里云学生服务器免费申请&#xff0c;之前是云翼计划学生服务器9元/月&#xff0c;现在是高校计划&#xff0c;学生服务器可以免费申请&#xff0c;先完成学生认证即可免费领取一台云服务器ECS&#xff0c;配置为2核2G、1M带宽、40G系统盘&#xff0c;在云服务器ECS实例过期之…

ZigBee技术与实训教程(无线传感器网络笔记第三次)

3.协议架构 IEEE802.15.4 &#xff08;无限个人区域网技术&#xff09;标准只定义了PHY物理层和数据链路层的MAC控制子层。PHY由射频发射器以及底层的控制模块组成。MAC子层为高层访问物理层&#xff08;PHY&#xff09;信道提供点到点的通信服务接口。MAC 层以上的几个层次还…

ROS2中launch编写及参数含义(xml、python)

ROS2系列文章目录 ROS2中nav_msgs/msg/Path 数据含义及使用 ROS2中std_msgs/msg/Header 数据含义及使用 ROS中TF变换详解 文章目录 ROS2系列文章目录ROS2中launch编写及参数含义&#xff08;xml、python&#xff09;一、ROS官方介绍二、实现案例1.编写主函数、CMakeLists.tx…

一学就会 | ChatGPT提示词极简指南-有爱AI实战教程(三)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 导读&#xff1a;在使用 ChatGPT 时&#xff0c;当你给的指令越精确&#xff0c;它的回答会越到位&#xff0c;举例来说&#xff0c;假如你要请它帮忙写文案&#xff0c;如…

近年来文本检测相关工作梳理

引言 场景文本检测任务&#xff0c;一直以来是OCR整个任务中最为重要的一环。虽然有一些相关工作是端对端OCR工作的&#xff0c;但是从工业界来看&#xff0c;相关落地应用较为困难。因此&#xff0c;两阶段的OCR方案一直是优先考虑的。 在两阶段中&#xff08;文本检测文本识…

springboot254小区团购管理

小区团购管理设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装小区团购管理软件来发挥其高效地信…

DataWhale公开课笔记2:Diffusion Model和Transformer Diffusion

Stable Diffusion和AIGC AIGC是什么 AIGC的全称叫做AI generated content&#xff0c;AlGC (Al-Generated Content&#xff0c;人工智能生产内容)&#xff0c;是利用AI自动生产内容的生产方式。 在传统的内容创作领域中&#xff0c;专业生成内容&#xff08;PGC&#xff09;…

稀碎从零算法笔记Day10-LeecCode:赎金信

题型&#xff1a;哈希表、字符串 链接&#xff1a;383. 赎金信 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以…

Proxmox VE安装CentOS

1、下载CentOS镜像文件 阿里巴巴开源镜像站&#xff1a; https://developer.aliyun.com/mirror/ CentOS 镜像文件&#xff08;图形化界面&#xff09; https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/CentOS-8.5.2111-x86_64-dvd1.iso 2、上传ISO镜像 选择ISO镜像…

【Linux】软件包管理器yum(命令行工具rz,sz)

目录 01.何为软件包 软件包 软件包管理器 02.命令行工具rz、sz 03.yum的使用 查看与搜索 安装 卸载 其他 01.何为软件包 软件包 我们手机电脑上的各种软件应用其实就是一个个的可执行程序&#xff08;及其相关文件和资源的集合&#xff09;&#xff0c;打开应用的过程其…

计算机组成原理-微程序设计实验

一、实验目的 1.在简单模型机的基础上&#xff0c;通过知识的综合运用&#xff0c;进行5条机器指令的微程序设计。 2.进一步理解微程序控制器的工作原理&#xff0c;掌握指令与微指令的区别与联系。 3.通过编写和调试微程序&#xff0c;提高研究与设计能力。 二、实验要求 …

P1958 上学路线

难度&#xff1a;普及- 题目描述 你所在城市的街道好像一个棋盘&#xff0c;有 a 条南北方向的街道和 b 条东西方向的街道。南北方向的 a 条街道从西到东依次编号为 1 到 a&#xff0c;而东西方向的 b 条街道从南到北依次编号为 1 到 b&#xff0c;南北方向的街道 i 和东西方…

嘉绩咨询:搭建品牌招商桥梁,提供卓越讲师与会议服务

当下&#xff0c;品牌成功的关键在于强大的渠道支撑和高效的招商能力&#xff0c;在这一背景下&#xff0c;嘉绩咨询&#xff0c;这一专注于渠道招商全案系统孵化的知名平台型企业&#xff0c;今日宣布&#xff0c;将进一步加强其在品牌招商桥梁搭建上的服务功能&#xff0c;通…