C语言——转义字符、刷新输出

C语言转义字符从入门到实战:\n、\r、\t与数字转义全解析 在C语言编程中,转义字符是字符串与字符常量的基础语法,却常因理解停留在表面而在实际开发中引发问题。从本质上看,转义序列以反斜杠开头,用于在源码中无歧义地表达换行、回车、制表符等不可见或特殊含义的字符。理解其原理后,开发者不仅能避免路径分隔符、字符串终止符等经典错误,还能借助八进制与十六进制数字转义精确控制字节输出,满足协议解析、文件处理等底层需求。在工程实践中,合理运用\n、\r与printf格式控制符,可实现终端表格对齐、动态进度条刷新及交互菜单等常见功能。同时,不同操作系统对换行符的存储差异也要求开发 阅读详情

一、转义字符

常见的:

转义字符作用
\n换行
\b退格
\t水平制表符
\r回车,光标回退到本行开头的位置
\\代表字符:\
\’代表字符:’
\"代表字符:"
?代表一个问好
\0空字符 ,标记字符串的结束

另外,还有:

  • \ddd:ddd 表示跟 1~3 位八进制数

​ 不超过 unsigned char 的最大值,即’\377’

\xhh:hh 表示跟 1~2 位十六进制数
最大值为’\xFF’
注意是小写 x

例子:

使用转义字符’\ddd’、‘\xhh’

源代码:

//转义字符:'\ddd'、'\xhh'
#include <stdio.h>
int main()
{
    char ch = 0;

    ch = '\101';   //八进制数101,转化为十进制数为65
    printf(" %d\n", ch);
    printf(" %c\n\n", ch);

    ch = '\x41';   //十六进制数41,转化为十进制数为65
    printf(" %d\n", ch);
    printf(" %c\n\n", ch);

    return 0;
}

运行结果:

转义字符

例子:

转义字符常量只代表一个字符
源代码:

#include <stdio.h>
int main()
{
    printf("%d\n", sizeof("Hello world"));        //12
    printf("%d\n", sizeof("Hello\0world"));    //12
    printf("%d\n", sizeof("\\\"\377123\378"));
    //\377 占据 1 \378 不能算一个,因为越界因此算 2 字节,总共 9 字节
    printf("%d\n", sizeof("\0xFF\""));		//6
    
    return 0;
}

运行结果:

转义字符常量

转义字符总结

转义字符的表格

二、printf 刷新输出

​ 最初,printf() 语句把输出发送到一个叫做缓冲区(buffer)的中间存储区域,然后缓冲区中的内容再不断发送到屏幕上

​ 作用:提高 cpu 的处理速度

​ 把缓冲区中的内容发送到屏幕是在缓冲区满遇到换行字符(\n)或需要输入的时候(从缓冲区把数据发送到屏幕或文件被称为刷新缓冲区)

​ printf() 函数的返回值是待显示字符的个数

C语言实现printf同行输出刷新显示) 正常我们使用printf函数将需要显示的数据输出到屏幕上: 为了便于查看,每次需要换行显示,如下图,这样一行一行显示非常不方便查看,因此产生了实现同行输出的需求 要想同行输出,只需要将上次输出的内容覆盖掉就好,因此,只需要将下次输出的起始点(光标位置)移至改行前面即可,这时我们需要将换行符替换为 这样就能实现同行覆盖输出了,也就是刷新显示 读者可以使用下面的小代码测试一下效果再运用到自己的程序中 阅读详情

相关推荐

C语言:缓冲区的刷新

在C语言中,缓冲区是用来暂时存储数据的一块内存空间。

2301_81510906的博客 2843

转义字符输出

转义字符输出时前面要加上“\”,如: printf("\\t");  输出制表符“\t” printf("\\n"); 输出换行符"\n" printf("\\");   输出斜杠“\” 可以这样来理解,输出时,当遇到"\"时,表示转义,"\\"表示的是一个斜杠"\",这样后面跟的字母是什么就打印什么,不管后面跟的是什么字符。 有一个问题,就是回退符从键盘输入不了,在C语言经典教材《C

青山的博客 1万+

STM32使用1.69寸液晶显示模块使用缓冲区实现快速刷新全屏显示字符串功能

STM32 1.69寸液晶 显示模块 缓冲区 显示 刷新

ztvzbj的博客 1520

如何使用C/C++刷新修改已经打印显示在终端上的内容

写本文的起源是因为在安装一些工具的时候,发现在终端上并行安装的情况下,显示安装信息是会修改之前已经打印出来的内容,这是怎么做到的呢?抱着对这个问题的好奇我进行了一些探索。

ZhongUncle的博客 4642

C语言如何清除控制台特定的一行,及'\b'字符的使用

前言 我们平时在用C语言进行编程的时候,经常遇到需要在控制台中进行字符及字符串的输出,特别是在初学阶段,非常普遍。在普通的输出中,我们一般用printf函数进行输出,每次输出完一行,再输入其他的内容的时候总是换行进行输出,原来的那一行还是存在的。有时候上一行的输出我们可能已经不需要它了, 这时候它再显示在控制台里就会显得很不干净,很不美观。而本文将介绍将控制台变得干净、美观的方法。 用转义字符’/...

dark_cy的博客 2万+

C语言的格式化输出

最近在复习C语言时发现自己对C语言某些格式化输入的规则还有些模糊,于是就重新总结学习了一下,果然温故知新,还是值得说一下滴。(其实就是手痒了想写点简单的内容,不过你可以先看一下接下来的这个小demo,看看关于格式化的东西都还记得不,检验一下自己的C语言基础怎么样)

wz_290793的博客 1021

c语言去掉某个字母输出,C语言如何清除控制台特定的一行,及'\b'字符的使用

前言我们平时在用C语言进行编程的时候,经常遇到需要在控制台中进行字符及字符串的输出,特别是在初学阶段,非常普遍。在普通的输出中,我们一般用printf函数进行输出,每次输出完一行,再输入其他的内容的时候总是换行进行输出,原来的那一行还是存在的。有时候上一行的输出我们可能已经不需要它了, 这时候它再显示在控制台里就会显得很不干净,很不美观。而本文将介绍将控制台变得干净、美观的方法。用转义字符 '/r...

weixin_39800957的博客 2170

printf回到上一行开头以及回到本行开头的方法

回到上一行开头 #include <stdio.h> #include <unistd.h> int main(void) { int i = 0; while(1){ printf("%d\n", i); printf("\033[1A"); //先回到上一行 p...

weixin_30376509的博客 4970

【C/C++】linux C 中sleep “卡住”的问题

目录 linux环境下C语言中sleep的问题 Linux下的延迟函数sleep() linux环境下C语言中sleep的问题 printf默认是输出到标准输出,而标准输出默认使用的是行缓冲。 在sleep之前fflush(stdout)强制刷缓冲,或者在程序开始使用setbuf(stdout, NULL)禁用缓冲 当然,假如你有足够的耐...

小鱼菜鸟的博客 1769

C学习---输入输出

今天来学习c语言中强大的输入输出相关的东东,很基础,但是也很重要,话不多说,进入主题: printf 下面对其进行介绍: 运行结果: 打印结果: 运行结果: 运行结果: 如果不足位,想补指定的字符,可以这样: 运行结果: 运行结果: 注意:这种方式,没法用指定的字符来补不足的位数,如下: 运行结果: 同时也对字符串的输出有效: 运行结果..

webor2006的博客 236

C Primer Plus(6) 中文版 第3章 数据和C 3.7 转义序列示例

C Primer Plus(6) 中文版 第3章 数据和C 3.7 转义序列示例

weixin_客子光阴的博客 134

我眼中的“helloworld”——缓冲区

前言:         近日,在进行一个“私有云”项目中,遇到了关于缓存输出的问题,不免想到每一个学C语言的人写的第一个程序“helloworld”。这个程序从初学者的角度来看,也就短短几行,非常简单,但再回首,这是一个不简单的程序,可以说不是每一个人都会写“helloworld”,更精确的说是写对。真正读懂“helloworld”是需要时间的累积的。

junzhu_beautifulpig的博客 564

【Linux】第一个Linux小程序——进度条

今天为大家带来的是一篇关于在Linux上编写的进度条小程序的博客,主要关于C语言缓冲区和LInux上一些工具的使用。

MO_lion的博客 853

c语言刷新屏幕函数_C语言四大内置输出函数你知多少?C语言基础之输出函数

前言上一栏目主要讲解了各种数据类型的知识,大家先闭眼回顾一下数据类型的知识哦。本章节主要内容是讲解程序的基本交互设计之程序的输出。程序和人交互无非就是通过外设进行输入信息,C语言中基本的交互的基本流程如下:用户的键盘操作程序接受键盘的值输出相关信息到屏幕,示意反馈C语言内置输出函数C语言提供内置函数来执行输出操作。输出操作用于在用户屏幕(输出屏幕)或打印机或任何文件上显示数据。c编程语言提供以下内...

weixin_26849971的博客 2126

C语言实现在控制台同一行覆盖刷新输出,以及'\b'退格控制字符的使用

C语言实现在控制台同一行覆盖刷新输出,以及’\b’退格控制字符的使用

山有木兮卿有意_的专栏 4万+

c语言复习1

c语言复习基础篇1.printf语法问题2.进制3.类型选取4.数值溢出问题5.转义功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 基础篇...

J k l的博客 6806

读取字符、字符串,c语言中的输入输出不会再乱了!

在C语言中,输入输出缓冲区是提高I/O操作效率的一种机制。通过使用缓冲区,程序可以减少直接与硬件(如键盘、显示器或文件)交互的次数,从而提高性能。缓冲区是内存中的一块区域,用于临时存储数据。在进行输入输出操作时,数据首先被写入缓冲区,然后再从缓冲区传输到目标设备。

qq_57570560的博客 1348

C语言转义字符使用场景

控制输出格式(换行、制表)表示特殊字符(引号、反斜杠)嵌入不可见字符(空字符、控制码)二进制数据表示(十六进制、八进制)协议通信(串口、网络)

weixin_44702665的博客 371
上一篇: C语言——浮点型数据的存储
下一篇: C语言——字符串、打印字符串的三种方式
青春无限坑
博客等级 码龄5年 22粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青春无限坑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值