当我输入密码时,第一个字母表变得与我输入的不同

时间:2013-12-11 13:56:40

标签: c++

这是接受字符串的代码,并在每个字母表位置显示'*'(用于密码)。例如,当我输入string时,我输入的密码比显示@assword而不是密码。请帮助我。 ....

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

void main()
{
clrscr();
char pass[5];

cout<<"\n\n Pass : ";
int i=0;
pass[0]=getch();
while(pass[i]!=13)
{        i++;
    cout<<"*";
    pass[i]=getch();

}

cout<<"\n\n";

cout<<pass;

getch();
}

1 个答案:

答案 0 :(得分:1)

你只为密码分配了5个字节,但是读取了一个正确的字节数,这将导致非法访问,并且基本上会发生各种(可能)随机的事情,包括像你看到的奇怪的破坏。

此外,您无法终止您的char数组,因此您可能会在密码后打印随机内容 - 在循环之后放置pass[++i]='\0';将解决此问题。

尝试将其增加到更大的值,看看是否能解决问题。 如果没有,你可以粘贴整个输出 - 搞乱吗?只是