鱼C论坛

 找回密码
 立即注册
查看: 1946|回复: 12

[已解决]关于 \b 的用法疑惑

[复制链接]
发表于 2021-9-30 20:45:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 一阵三十六 于 2021-9-30 20:47 编辑
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         printf(" hello world\b\b\b\b\b\b\b\b\b\b\b FishC\n");
  5.         return 0;
  6. }
复制代码


关于我对\b的认识:
首先 \b 相当于键盘上的  backspace 键即退格键,
在上面的代码中,\b的数量是小于前面的字符数量的

我的理解是:
退格符将删除前面对应数量的字符

然而:
经不严谨测试,连续的\b只能删除5个字符,

想不明白这是什么原理.....

运行结果如下:
966.png



怎么world就到了FishC后面呢???

最佳答案
2021-10-1 08:21:19
本帖最后由 hrpzcf 于 2021-10-1 09:31 编辑

书上的解释是 \b 使光标左移,不擦除字符,但在某些实现中运行是擦除的

你以为它只能删除5个字符,实际上不是,你的代码中:多个 \b 已经把光标移到字符开头,但是原字符没有被擦除,后面打印的 FishC仅覆盖了 hello 那一块,word 没有被覆盖到,让你误以为只能删除5的字符,把 \b 后的字符加长就能看到区别。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     printf(" hello world\b\b\b\b\b\b\b\b\b\b\b FishC1234567890\n");
  5.     return 0;
  6. }
复制代码


(, 下载次数: 0)

(, 下载次数: 0)

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-30 21:17:24 | 显示全部楼层
本帖最后由 一阵三十六 于 2021-9-30 21:18 编辑
jhq999 发表于 2021-9-30 20:52
不是删除是覆盖


可以详细说一下吗?
不能理解....

这段代码其实我看不懂....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-1 07:59:24 | 显示全部楼层
jhq999 发表于 2021-9-30 20:52
不是删除是覆盖

这个代码运行出现警告了....
信息如下:
  1.                   In function 'main':
  2. 5        9           [Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
  3. 5        9           [Note] use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code

  4. 8        17                [Warning] incompatible implicit declaration of built-in function 'printf'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-30 06:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表