gpt4 book ai didi

c++ - 未知字符被添加到字符串的最后

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:45 24 4
gpt4 key购买 nike

下面是我用 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;}
}

程序运行的图像。 Image of program run.

我不明白为什么相同的代码(仅使用不同的变量)会以不同的方式工作。我怎样才能更正代码以按预期正常工作?

最佳答案

你必须改变

p[i+1]='\0';

p[i]='\0';

因为 i 在最后一次循环迭代后已经递增了。

但是,最好根本不要使用原始字符数组:

string pwd;
for(i=0; i<13; i++){
x = getch();
if(x == '\r'){ break; }
pwd += x;
}

关于c++ - 未知字符被添加到字符串的最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31101594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com