【发布时间】:2021-10-28 01:54:45
【问题描述】:
我的程序继续循环而不是跳出它。
输入错误密码后,程序会要求用户重新输入密码(应该如此)。虽然,如果用户输入了正确的密码,在之前输入错误的密码之后,程序会在应该跳出循环的时候继续要求他们重新输入密码。
如果用户在第一次尝试时输入正确的密码,我的程序将执行,尽管它会让用户点击回车键两次而不是一次。
我不知道出了什么问题。任何帮助表示赞赏。
#define ENTER 13
#define TAB 9
#define BKSP 8
#define SPACE 32
#define PASSWORD "HelloWorld"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char password[100];
char ch;
int i = 0;
do {
printf("\n\n\t\t\t\t\tPlease enter your password: ");
while (1) {
ch = getch();
if (ch == ENTER) {
password[i] = '\0';
break;
}
else if (ch == BKSP) {
if (i > 0) {
i--;
printf("\b \b");
}
}
else if (ch == TAB || ch == SPACE) {
continue;
}
else {
password[i] = ch;
i++;
printf("*");
}
}
} while((strcmp(password, PASSWORD) != 0));
return 0;
}
【问题讨论】:
-
代码不完整。细节很重要。请提供完整的代码minimal reproducible example。
-
对于初学者,当密码错误时,您不会将
i重置为 0。 -
没有什么可以让您了解内部循环甚至测试密码!
-
@hesham_EE
break;怎么样? -
@kaylum 哎呀......对!代码有一个中断。我错了,对不起!
标签: c loops while-loop