下面是我在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