| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 802 人关注过本帖
标题:还是密码的问题
只看楼主 加入收藏
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
 问题点数:0 回复次数:15 
还是密码的问题

#include<iostream.h>
#include<conio.h>

void main()
{


char a[23];


cout<<endl;
cout<<"请输入您的密码(6——10位数字或字母):";
int index=0;
while(1)
{
char ch;
ch=getch();

if(ch==8) //退格键
{

if(index!=0)
{
cout<<char(8)<<" "<<char(8);
index--;
}
}
else
{if(ch=='\r') //回车键

{a[index]='\0';
cout<<endl;
break;
}

else
{
cout<<"*";
a[index++]=ch;
}
}
}
}




运行时要enter后才能看见之前输入的密码“*******”;
而且不打印出"请输入您的密码(6——10位数字或字母):"这一行 ;当用stdio.h的printf()时才能打印出来,可密码的问题依旧,
都不知怎么回事了~~~~~~求助~~~~

搜索更多相关主题的帖子: 密码 
2007-05-13 15:24
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
得分:0 

#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
char password[100];
int index=0;
while(1)
{
char ch;
ch=getch();
if(ch==8) //退格键
{
if(index!=0)
{
cout<<char(8)<<" "<<char(8);
index--;
}
}
else if(ch=='\r') //回车键
{
password[index]='\0';
cout<<endl;
break;
}
else
{
cout<<"*";
password[index++]=ch;
}
}
cout<<"password:"<<password<<endl;
return 0;
}

上面是一位高手写的,我做了这样的修改:

#include<iostream.h>
#include<conio.h>
void main()
{
char password[100];
int index=0;
while(1)
{
char ch;
ch=getch();
if(ch==8) //退格键
{
if(index!=0)
{
cout<<char(8)<<" "<<char(8);
index--;
}
}
else if(ch=='\r') //回车键
{
password[index]='\0';
cout<<endl;
break;
}
else
{
cout<<"*";
password[index++]=ch;
}
}
cout<<"password:"<<password<<endl;
}

然后就出现上面所说的情况了,这又是为什么呢?????


2007-05-13 15:33
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
在每次cout后调用flush.
例如:
cout<<"print"<<endl;
cout.flush();

=×&D o I p R e E n C g T l X&×=
2007-05-13 15:51
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
得分:0 

这只是要简单地实现密码的以屏蔽的方式输入,然后又要能够用backspace和enter键来修改和确定这些密码~~~~~~有些程序要用到这个功能~~~

2007-05-13 15:52
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
得分:0 
我用了cout.flush();  ,但还是不行啊~~~~~这和缓冲没有关系吧?
2007-05-13 16:03
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
char pw[100];
cout<<"请输入您的密码(6——10位数字或字母):";
cout.flush();
for(int i=0;i<100;i++){
pw[i]=getch();
cout<<"*";
cout.flush();
if(pw[i]=='\r')
break;
}
pw[i]='\0';
cout<<"password:"<<pw<<endl;
cout.flush();

[此贴子已经被作者于2007-5-13 16:12:17编辑过]


=×&D o I p R e E n C g T l X&×=
2007-05-13 16:11
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
得分:0 
谢谢了~~~~但是我想要的主要是实现 Backspace 的原本功能,这是最关键的~~~你写的可以实现enter的确定并停止密码输入,可我要的是可以修改~~~
2007-05-13 16:24
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 

还不行么?

[此贴子已经被作者于2007-5-13 17:14:52编辑过]


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2007-05-13 17:12
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
得分:0 
是啊~~~
2007-05-13 17:22
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 

主要是按BackSpace能清除一个*.
不太清楚如何对以输出的数据进行清除.


=×&D o I p R e E n C g T l X&×=
2007-05-13 17:25
快速回复:还是密码的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029866 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved