密码功能错误

时间:2016-04-02 00:19:13

标签: c function while-loop

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循环有关。如果我尝试更改条件,程序根本不运行。有什么想法吗?

2 个答案:

答案 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,尽管这不会导致程序崩溃(可能)。