栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C/C++删除屏幕上部分已输出字符并回退光标

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C/C++删除屏幕上部分已输出字符并回退光标

C/C++删除屏幕上部分已输出字符并回退光标

起因是想写一个输入密码时,在屏幕上显示星号而不显示具体密码的代码。这个网上大把教程,include,用其中的getch()函数即可,这个函数在获取输入时不会把输入显示在屏幕上,我们自己打印一个星号就行了。

但是问题来了,如果输入的时候不小心输错了,想要按delete键删除怎么办?如果按delete键它也会被读成一个字符,然后输出一个*号,这完全达不到删除的效果啊。想要解决这个问题,就要用到’b’,也就是delete键对应的退格符了。

具体的方法如下:

//printf('b')的作用是把屏幕上的光标回退一格
printf('b');  //回退一格光标
printf(' ');	//打印一个空格把要删除的字符覆盖了
printf('b');	//再回退一格光标来掩饰掉打印的空格

整个输密码的代码如下,C++也一样通用的。

	char password[100] = {0};
	printf("please input the password:n");
	int i = 0;
	while (1) { 
		char c = getch();
		if (c == 'r') { //输入回车就退出循环
			break;
		}
		if (c == 'b') { //delete键
			if (i > 0) {
				password[i - 1] = '';
				i--;
			}
			printf("b");	//输出b,让光标回退一格
			printf(" b");  //输出空格覆盖掉要删除的字符,然后输出b再把光标回退。
			continue;
		}
		password[i++] = c;
		printf("*");
	}

这样一整登录过程就显得高级多了==。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号