前言

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

用转义字符 '/r '实现特定行覆盖刷新或清除

'\r '是C语言提供的一种将当前位置移到本行开头的转义字符,它的字符值为回车。在使用它的时候我们需要用printf函数对它进行输出。

下面是具体做法
  1、在控制台输出一行信息:printf(“这时第1次输出…”);
  2、用转义字符清除刚输出的信息:printf("\r");
   3、输出下一信息:printf(“这时第2次数出… ”);
   注:第一步执行完需要间隔一点时间在执行第二步,否则会因为刷新太快而看不到之前的输出。

示例代码

#include<stdio.h>
#include<windows.h>
int main()
{int i;for(i=1;i<5;i++){printf("这是第 %d 次输出...",i);Sleep(1000);      //延时1000msprintf("\r"); }return 0;
}

说明

它其实并不能直接将某一行的信息清除,而是将光标的位置移动到本行的开头,这样的话,控制台新输出的信息就会将之前的覆盖掉,从而达到在同一行刷新输出的功能。但是有一点必须注意,当新输出的信息长度小于之前的信息时,那么之前的信息就不会被完全覆盖(就说会留下一个小尾巴),这时可以用输出空字符的方法将其覆盖掉

有人觉得覆盖刷新一行还不够酷,说只想刷新这一行的最后一个字符,问有没有办法。
答案是肯定的!

'\b '退格字符的功能及使用方法

'\b '和 上面所说的 '\r '一样,都是C语言提供的转移字符。不同于 '\r '的是, '\b '的功能是将当前位置后退一个字符,它的字符值为退格。使用的时候同样需要用printf函数进行输出。

使用方法及误区
  1、对单个字符进行退格操作

printf("abc\bv");  //此处的输出结果是abv,后面的'v'就是用来替换'c'的字符
printf("abc\b");  //此处的输出结果是abc,可以看出虽然用了'\b'退格,但是并没有提供相应的用来替换最后一个字符'c'的字符
printf("abc\b ");  //此处的输出结果是ab,因为在'\b'后面,跟了一个空格' '来替换了字符'c'

  2、对多个字符进行退格操作

printf("phrase\b\b\b\b.new");  //此处的输出结果是ph.new,后面的字符串".new"是用来替换"rase"的
printf("phrase\b\b\b\b  newString");  //此处输出的结果是ph  newString,中间用了两个空格来代替字符串"ra",紧接着用了两个字符"ne"来代替字符串"se",再后面多出的"wString"字符串,则原样输出

总结

转义字符 '\r '和 '\b '的作用都是实现光标的移动,从而改变控制台的输出位置。 虽然它们并不能直接清除某一行或一个信息,但是我们可以通过空字符对之前信息的覆盖,进而在视觉上达到清除信息的效果。除了清除信息,它们还可以实现覆盖刷新等其他功能。

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

  1. c语言删除控制台字符,如何在C中清除控制台?

    有几种清除控制台或输出屏幕的方法,其中一种是clrscr()方法.当函数调用时,它将清除屏幕.在" conio.h"头文件中声明.还有一些其他方法,例如system(" ...

  2. R语言ggplot2可视化在特定数据点添加竖直的虚线实战:Add a dotted vertical line on certain x-axis values

    R语言ggplot2可视化在特定数据点添加竖直的虚线实战:Add a dotted vertical line on certain x-axis values 目录 R语言

  3. R语言使用dplyr将特定的数据列移动到最前面、使用dplyr将特定数据列移动到另一指定数据列的后面、使用dplyr将特定数据列移动到另一指定数据列的前面

    R语言使用dplyr将特定的数据列移动到最前面.使用dplyr将特定数据列移动到另一指定数据列的后面.使用dplyr将特定数据列移动到另一指定数据列的前面 目录

  4. R语言在dataframe的特定索引位置添加数据行而非在dataframe末尾append数据行实战

    R语言在dataframe的特定索引位置添加数据行而非在dataframe末尾append数据行实战 目录 R语言在dataframe的特定索引位置添加数

  5. c语言控制台光标的坐标范围,C语言之实现控制台光标随意移动的实例代码

    原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方 ...

  6. 用坐标实现物体的移动c语言,C语言之实现控制台光标随意移动的实例代码

    原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方 ...

  7. java清除控制台_Java:清除控制台

    问题 请问任何正文可以告诉我在Java中使用什么代码来清除屏幕?例如在C中 system("CLS"); Java用于清晰屏幕的代码是什么? 谢谢! #1 热门回答(87 赞) 由 ...

  8. c语言:(指针)输入一行文字,找出其中的大写字母,小写字母,数字,空格以及其他字符

    c语言:(指针)输入一行文字,找出其中的大写字母,小写字母,数字,空格以及其他字符 #include<stdio.h> #include<stdlib.h> #include& ...

  9. [C语言] 制作一个控制台的电子时钟

    使用c语言制作一个控制台的电子时钟 学习了c语言基本语法后,在学习了time.h的库文件,让我产生了想制作一款电子时钟的念头,那好就开始动手操作吧. 使用到下面这些技术: 首先必须先导入库 /**** ...

最新文章

  1. 原型设计工具:Axure RP Pro 4
  2. php点击按钮跳转页面heeader,php - 通过FPDF生成后插入水印并打印PDF - SO中文参考 - www.soinside.com...
  3. 靠谱测试人员需具备沟通表达能力
  4. 手里有200万,如何理财?
  5. mysql 无缓冲的查询_MySQL缓冲和无缓冲查询对比
  6. Access数据类型备忘
  7. Atitit 网盘使用法 艾提拉著 目录 1. 需要解决几个问题 2 1.1. 多关键词搜索的问题 使用every索引解决 2 1.2. 重要文具类索引使用分类索引 日志 crm类增加000前缀
  8. Quartz配置RMI设置-006
  9. 基于Web的仓库管理系统的设计与实现
  10. JavaEE笔记:第十九次课之AJAX
  11. 给 Android 开发者的 RxJava 详解
  12. 配电网PMU优化配置与状态估计(Matlab代码实现)
  13. msvcp100.dll 丢失的解决方法-msvcp100.dll 丢失怎么修复
  14. 猎鹰9号运载火箭介绍
  15. c语言字母数字有多少种组合,C语言------排列组合 组合情况(重复和不重复)
  16. html 图片放大缩小轮播,jQuery左右滚动支持图片放大缩略图图片轮播代码分享
  17. 什么是MyBatis
  18. 彻底关闭FF新闻资讯
  19. 库存转换是什么意思_社保卡库存转移啥意思 社保卡怎么转出
  20. C#设计模式之简单工厂模式(过渡模式)

热门文章

  1. 英文登录QQ账号 一个有趣的小知识
  2. imToken 投资 imKey 并推出通用硬件钱包方案
  3. iphone4s拒接电话
  4. QPainter 绘制的旋转中心问题
  5. JS 实现鼠标进入变色
  6. JVM GC调优--增大Eden Space提高性能
  7. lemming games 3 ! hdlbits
  8. Docker学习三 Docker安装Mysql
  9. 智慧城市的发展动力、推动因素、负面影响、挑战与应对
  10. 模电——电路中电源地、模拟地、信号地的区别与联系