void main()
{
Password();
}
void Password()
{
//declare local variables//
char cPassCode[] = "String";
int iFlag, iComparison = 0;
//Run the code to check the password//
while (iFlag = 1)
{
printf("Please enter the password: ");
scanf("%s", cPassCode);
iComparison = strcmp(cPassCode,"A23bc5");
if (iComparison == 0)
{
Header();
ArrayPrinter(Array);
iFlag = 0;
}
else
{
printf("Wrong password");
iFlag = 1;
}
}
}
我的程序已经有了这个代码。整个程序运行正常,但它再次通过循环。我认为这与我的while循环有关。如果我尝试更改条件,程序根本不运行。有什么想法吗?
答案 0 :(得分:1)
此处存在一个问题:while (iFlag = 1)
您没有将iFlag
与1进行比较,而是将其设置为1.执行此操作的一种正确方法是while (iFlag == 1)
但更安全的方式短语是while (1 == iFlag)
,以便下次发生== / =错误时编译器将会启动。但最好的方法是,因为iFlag被用作布尔值,只需要做while (iFlag)
接下来,您需要在使用之前初始化iFlag
:
int iFlag = 1, iComparison = 0;
最后,这不是初始化cPassCode
的好方法:
char cPassCode[] = "String";
由于您不知道用户将键入多少个字符 - 请使用更大的值,例如:
#define MAXIMUM_INPUT_SIZE 1024
// ...
char cPassCode[MAXIMUM_INPUT_SIZE];
答案 1 :(得分:0)
你的while循环设置iFlag = 1
,所以它总是如此。您需要比较运算符iFlag == 1
。此外,您应该将iFlag
初始化为1
而不是零,以便您的新循环正常工作。最后,你应该使用malloc cPassCode
,尽管这不会导致程序崩溃(可能)。