C语言如何清除控制台特定的一行,及'\b'字符的使用
前言
我们平时在用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'字符的使用相关推荐
- c语言删除控制台字符,如何在C中清除控制台?
有几种清除控制台或输出屏幕的方法,其中一种是clrscr()方法.当函数调用时,它将清除屏幕.在" conio.h"头文件中声明.还有一些其他方法,例如system(" ...
- 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语言
- R语言使用dplyr将特定的数据列移动到最前面、使用dplyr将特定数据列移动到另一指定数据列的后面、使用dplyr将特定数据列移动到另一指定数据列的前面
R语言使用dplyr将特定的数据列移动到最前面.使用dplyr将特定数据列移动到另一指定数据列的后面.使用dplyr将特定数据列移动到另一指定数据列的前面 目录
- R语言在dataframe的特定索引位置添加数据行而非在dataframe末尾append数据行实战
R语言在dataframe的特定索引位置添加数据行而非在dataframe末尾append数据行实战 目录 R语言在dataframe的特定索引位置添加数
- c语言控制台光标的坐标范围,C语言之实现控制台光标随意移动的实例代码
原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方 ...
- 用坐标实现物体的移动c语言,C语言之实现控制台光标随意移动的实例代码
原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方 ...
- java清除控制台_Java:清除控制台
问题 请问任何正文可以告诉我在Java中使用什么代码来清除屏幕?例如在C中 system("CLS"); Java用于清晰屏幕的代码是什么? 谢谢! #1 热门回答(87 赞) 由 ...
- c语言:(指针)输入一行文字,找出其中的大写字母,小写字母,数字,空格以及其他字符
c语言:(指针)输入一行文字,找出其中的大写字母,小写字母,数字,空格以及其他字符 #include<stdio.h> #include<stdlib.h> #include& ...
- [C语言] 制作一个控制台的电子时钟
使用c语言制作一个控制台的电子时钟 学习了c语言基本语法后,在学习了time.h的库文件,让我产生了想制作一款电子时钟的念头,那好就开始动手操作吧. 使用到下面这些技术: 首先必须先导入库 /**** ...
最新文章
- 原型设计工具:Axure RP Pro 4
- php点击按钮跳转页面heeader,php - 通过FPDF生成后插入水印并打印PDF - SO中文参考 - www.soinside.com...
- 靠谱测试人员需具备沟通表达能力
- 手里有200万,如何理财?
- mysql 无缓冲的查询_MySQL缓冲和无缓冲查询对比
- Access数据类型备忘
- Atitit 网盘使用法 艾提拉著 目录 1. 需要解决几个问题	2 1.1. 多关键词搜索的问题 使用every索引解决	2 1.2. 重要文具类索引使用分类索引 日志 crm类增加000前缀
- Quartz配置RMI设置-006
- 基于Web的仓库管理系统的设计与实现
- JavaEE笔记:第十九次课之AJAX
- 给 Android 开发者的 RxJava 详解
- 配电网PMU优化配置与状态估计(Matlab代码实现)
- msvcp100.dll 丢失的解决方法-msvcp100.dll 丢失怎么修复
- 猎鹰9号运载火箭介绍
- c语言字母数字有多少种组合,C语言------排列组合 组合情况(重复和不重复)
- html 图片放大缩小轮播,jQuery左右滚动支持图片放大缩略图图片轮播代码分享
- 什么是MyBatis
- 彻底关闭FF新闻资讯
- 库存转换是什么意思_社保卡库存转移啥意思 社保卡怎么转出
- C#设计模式之简单工厂模式(过渡模式)