特殊的转义字符 您所在的位置:网站首页 matlab转义符 特殊的转义字符

特殊的转义字符

2024-07-16 21:06| 来源: 网络整理| 查看: 265

引入

我们在写 C 语言题目时,经常会碰见类似于 数字 分隔符 数字 分隔符 数字 分隔符 这样的输出。比如下面这段代码:

1=1 1+2=3 1+2+3=6 1+2+3+4=10

如果用循环的话,这个加号是个大问题。直接用 printf("%d+"),最后面会多一个加号;用 printf("+%d") 则最前面会多一个加号。 想要解决,则必须判断当前输出的是否为第一个或者最后一个数字,然后做特殊处理。

新思路

有人就发现了,转义字符里有一个\b,这是个退格字符,能不能用它把多余的加号给删了呢? 那就试试呗,先输出个从 1 加到 5 试试

#include #include int main(void) { int sum = 0; for (int i = 1; i int sum = 0; for (int i = 1; i printf("123\n"); printf("123\b\n"); printf("123\b4\n"); return 0; }

运行结果 在这里插入图片描述

然而,我们把它编译,然后把程序的输出结果重定向到文件里,得到的结果是这样的:

123 123 1234

这段输出在不同的地方显示的内容可能不相同 Windows 记事本:一个框

Visual Studio 2015:啥也没有 在这里插入图片描述 Visual Studio 2019:一个带空心圈的实心框 ![[Pasted image 20221125225938.png]] Sublime: ![[Pasted image 20221125230132.png]] 可以看到我们的 \b 字符,也就是 ASCII 码为 0x08 的字符被原样输出了出来, 在文本编辑器里并没有实现退格的效果。 判题平台上使用的就是类似的方法,把程序的输出直接导出,传到网站上显示,但浏览器可不认 \b,于是就显示为了一个红点。

实际应用

利用这个退格字符,我们可以做一个进度条出来 第一种:

#include #include #include int main() { int index = 0; char ch[] = {'|', '\\', '-', '/'}; while (1) { putchar(ch[index]); index++; if (index >= 4) index = 0; Sleep(200); // Sleep(200) 的作用是延时 200 毫秒(0.2 秒)再继续执行下面的代码 putchar('\b'); } return 0; }

演示 在这里插入图片描述

第二种:

#include #include #include int main() { //假设要做一个耗时较长的操作 //为了更好的用户体验,我们需要一个进度条 double progress = 0.1; //当前进度 int length = 15; //进度条字符长度 for (progress = 0.1; progress


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有