 2023-09-21 00:52 采纳率: 0%
浏览 8

linux printf'\b'删除显示在终端上的中文字符

写代码时想要用\b加空格删掉原本输出在终端上的字符,比如

printf("abc");
fflush(stdout);
printf("\b\b\b   ");

但是在删除中文字符的时候出现了问题
我的想法是:utf8的中文按3个字节存放,所以删除中文字符只要用3个退格+空格覆盖即可

printf("中文字符\b\b\b   \n");

然而结果是

img


前一个字符也被覆盖了……
最后发现只要2个\b,就正常了,但这是为什么?难度中文打印出来的时候只有两个字节??

printf("中文字符\b\b  \n");
  • 写回答

2条回答 默认 最新

  • Loup&卡普 2023-09-21 01:19
    关注

    中文 utf-8 不一定是三个字节 ,utf8是不定字节 长度由第一个字节标识
    我也不清楚 但是 偶数中文和奇数中文 ,mingw 编译器 qt 会有一种编不过 在这里mark 下等答案

    评论

报告相同问题?

问题事件

  • 创建了问题 9月21日

悬赏问题

  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数