下面是我在C++中设计的应用程序的一部分。下面的代码片段显示***为用户输入的密码。在程序中的两个地方使用代码,一个工作正常,另一个地方在enterdPassword
的末尾显示未知字符。将未知字符添加到最后一个字符串
这里工作正常。输入的密码保存在文件中以备后用。
if(FirstRun()){
display_welcome_text_first_run();
cout<<"\nEnter A Password(Max 13 character): ";
for(i=0; i<13; i++){
x = getch();
if(x == '\r'){ break; }
putchar('*');
p[i]=x;
}
p[i+1]='\0';
string pwd(p);
ofstream o(PASSWORD_FILE,ios::binary);
o <<pwd<<endl;
o.close();
这显示错误它示出了在enterdPassword
末端的未知字符。
bool verifyPassword(){
string savdPassword;
char px[20], x;
int i;
cout<<"Enter Your Password To Continue: ";
for(i=0; i<13; i++){
x = getch();
if(x == '\r'){ break; }
putchar('*');
px[i] = x;
}
px[i+1] = '\0';
string enterdPassword(px);
ifstream pp(PASSWORD_FILE, ios::binary);
pp>>savdPassword;
pp.close();
cout<<endl<<enterdPassword;<<" "<<savdPassword; //for debugging
if(enterdPassword == savdPassword){
return true;
}
else{return false;}
}
程序运行的图像。
我不明白为什么相同的代码(只有不同的变量)给予不同的工作如何纠正代码以正确工作?
我认为,在这两种情况下,'px [i + 1] ='\ 0';'应该是'px [i] ='\ 0';'。 –
好吧,让我检查 – Pushkar