请教,文本输入中如何使光标向后退一格?

ra3 2003-07-26 06:39:05
我做的这个是输入密码的程序,但是按退格键删去一个字符时,就不大对了,谁可以告诉我如何在屏幕上让光标向后退一个格?

void inputPassword(char* ps, int size) {
char ch;
for (int i=0; i<size;) {
ch = getch();
if (ch == 13) break; // 输入回车结束输入
if (ch == 7) { // 按退格键的处理
if (i > 0) i--;
ps[i] = 0;
}

if (ch != 7) {
ps[i++] = ch;
printf("*");
}
} ps[i] = '\0';

}
...全文
755 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
勤奋的大头怪 2010-06-23
  • 打赏
  • 举报
回复
6 楼的有点问题
if(ch == 8)
{
if(i > 0)
{
putchar(8);
putchar(' ');
putchar(8);
i--;
}
else
{
printf("no date !\nplease input :");
continue;
}
}
或者中间那改成:
printf("\b");
printf(" ");
printf("\b");
pushser 2003-07-26
  • 打赏
  • 举报
回复
\b
Caoyu015 2003-07-26
  • 打赏
  • 举报
回复

//处理一个退格键如下:
putchar('\b');//回退一个字符。
putchar(' '); //打印一个空格
putchar('\b');//回退一个字符。

preahow 2003-07-26
  • 打赏
  • 举报
回复
\b如何,我也不太确定
xiaoyi20 2003-07-26
  • 打赏
  • 举报
回复
那如果屏幕上的其他信息有用的话,那不是得设置区域?不然的话恐怕会有闪动。
skywebnet 2003-07-26
  • 打赏
  • 举报
回复
void inputPassword(char* ps, int size) {
char ch;
for (int i=0; i<size;) {
ch = getch();
if (ch == 13) break; // 输入回车结束输入
if (ch == 7) { // 按退格键的处理
if (i > 0) i--;
ps[i] = '\0'; //改
}

if (ch != 7) {
ps[i++] = ch;
printf("*");
}
} ps[i] = '\0';


你需要在输入字符后重新写屏,具体有兴趣可以探讨一下
我的邮箱: mickly.333@elong.com

}
Dragon132 2003-07-26
  • 打赏
  • 举报
回复
用下面语句:
printf("\b");
不过好像还有别的问题,输入的东西不会被变成*的,以前我试过了
输入字符后要按回车程序才读数的那么输入行也下移了
xiaoyi20 2003-07-26
  • 打赏
  • 举报
回复
这也是我想知道的问题。
但是为什么不用gets来获取密码,而用strlen来获取密码的长度呢?
这样的话就不会有这个问题了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧