这想法能实现么?

morejoy 2002-11-21 09:05:03
C++程序
需要实现如下功能:
控制台输入一个6位数,当每输入一位数字的时候,屏幕上并不显示出来而是显示一个
'*',类似输入密码的状态.
...全文
38 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
anrxhzh 2002-11-22
  • 打赏
  • 举报
回复
//老兄,这个问题和C\C++可没有关系呦

#include <windows.h>
#include <cstdlib>
#include <string>

std::string get_password(HANDLE h)
{
std::string pw;
while(true){
char ch;
DWORD count;
if(!ReadConsole(h,&ch,1,&count,0) || count==0 || ch==13) break;
pw+=ch;
printf("*");
}
return pw;
}

int main()
{
HANDLE h=GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(h,&mode);
SetConsoleMode(h,mode&~ENABLE_LINE_INPUT&~ENABLE_ECHO_INPUT);

printf("Enter password:");
std::string pw=get_password(h);
printf("\nThe password is:%s\n",pw.c_str());

CloseHandle(h);
}
morejoy 2002-11-22
  • 打赏
  • 举报
回复
用getch()之后cout<<'*'是可以的,试过了。
char a[6];
for(int i=0;i<6;i++)
{ a[i]=getch();
cout<<'*';
}
这个是全部字符输入之后才显示*,而不是每输入一个字符就显示,救命啊大伙
还有办法么???????????????
morejoy 2002-11-22
  • 打赏
  • 举报
回复
各位大哥上机试过么?
你们在输入密码的时候每输入一个字符,密码框里就显示一个*,而不是全输入完再显示啊一排****!

我按下 1,屏幕上只显示一个*
我按下2,屏幕上接着显示一个*,
xiaoniaoleyuan 2002-11-22
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <conio.h>
void main()
{
int *p=new int[6];
int i=0;
while((p[i]=getch())!='\n'&&i!=6)
{
cout<<'*';
i++;}
delete []p;
}
kxw 2002-11-22
  • 打赏
  • 举报
回复
当然可以cin一个数后

cout<<'*';

就OK
superzjx2000 2002-11-21
  • 打赏
  • 举报
回复
while(cin>>...){cout<<'*'}
superzjx2000 2002-11-21
  • 打赏
  • 举报
回复
untie(cout);
vanhui 2002-11-21
  • 打赏
  • 举报
回复
用getch()之后cout<<'*'是可以的,试过了。
char a[6];
for(int i=0;i<6;i++)
{ a[i]=getch();
cout<<'*';
}
vanhui 2002-11-21
  • 打赏
  • 举报
回复
楼主的意思是同时显示出来?!而不把原始数据显示呀。
不太清楚也。回去试一试好了。
morejoy 2002-11-21
  • 打赏
  • 举报
回复
不对吧,你试过没有啊
newgina 2002-11-21
  • 打赏
  • 举报
回复
用getch()之后cout<<'*'; 应该可以吧

69,373

社区成员

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

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