这是一个接受字符串并在字母的每个位置显示``*''的代码(用于密码)。例如,我输入的密码比当我退出字符串时显示的是@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();
}
您只为密码分配了5个字节,但读取了一个任意数量的字节,这将导致非法访问,并且基本上会发生各种(潜在的)随机事件,包括您所看到的奇怪损坏。
此外,您无法使终止char数组的操作无效,因此您可能会在密码后打印随机内容-将其pass[++i]='\0';
放置在循环后即可解决该问题。
尝试将其增加到更大的值,看看是否可以解决问题。如果没有,您是否可以粘贴整个输出-*会弄乱吗?只是
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句