我正在尝试创建一个C ++程序,该程序接受用户的用户名和密码,并将其与已存储在变量中的用户名和密码相匹配。对于密码,我使用*(星号)字符而不是隐私的实际字符。
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#include <string.h>
void main(void) {
clrscr();
gotoxy(10,10);
cout << "Username: ";
gotoxy(10,12);
cout << "Password: ";
char name1[10] = {"Apple"};
char name2[10];
char pass1[10] = {"Orange"};
char pass2[10] = {""};
gotoxy(23,10);
cin >> name2;
gotoxy(23,12);
cout << pass2;
int i = 0;
char ch;
while ((ch = getch()) != '\r') {
putch('*');
pass2[i] = ch;
i++;
}
if (strcmp(name1, name2) == 0 && strcmp(pass1, pass2) == 0) {
clrscr();
gotoxy(40,10);
cout << "YES!!!";
} else {
clrscr();
gotoxy(40,10);
cout << "NO!!!";
}
}
问题是当我尝试使用键盘上的退格键时,我没有删除该字符,而是在其末尾添加了更多字符。我可以通过导入C语言的string.h库来使其工作。但有没有什么方法可以通过使用代码中已定义的库而不必使用string.h库来使其工作。
答案 0 :(得分:1)
问题是当我尝试使用键盘上的退格键时,我不会删除该字符,而是会在其末尾添加更多字符
正确!当您使用退格键时,它实际上会生成退格字符(ASCII 0x8)。退格键不会“删除字符”;你只考虑它,因为软件通常是为了寻找退格字符并在遇到它们时特别表现。在这种情况下,该软件的作者是你!
你需要查看ch
的值,看看它是否是一个退格符...如果是的话,“做必要的”(只有你可以告诉它是什么)。
我可以通过导入C语言的string.h库来使其工作。
包含string.h
与此无关,对此无效。
答案 1 :(得分:0)
退格键被视为“非打印字符”,这是此行为的来源。您可能必须像处理问题中那样处理它。
您可以点击此处快速浏览此打印字符和其他非打印字符。 http://www.physics.udel.edu/~watson/scen103/ascii.html