密码强度无法正常运行的程序

时间:2017-01-02 04:48:24

标签: c for-loop passwords

我是C的初学者。

我有一个检查密码强度的程序。完整程序中复制问题的工作代码片段如下所示。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main()
{
    char password [25] = "qwerty1234";
    int counter;
    int numberBool = 0;

    for (counter = 0; counter > 25; counter++)
    {
        if(isdigit(password[counter]))
        {
            numberBool = 1;
        }
    }

    if(numberBool==1)
    {
        printf("You're good to go! \n");
    }
    else
    {
        printf("You're password is not secure \n");
    }

    return 0;
}

该计划的预期输出为:"You're good to go!"

我得到的输出是:"You're password is not secure"

我认为问题出现在FOR循环中,该循环旨在检查每个字符的数字,但是有缺陷并且没有检查每个字符。

要检查结论是否正确,我将变量password从原始1234qwerty切换为qwerty1234。相同的输出。

接下来,我尝试将变量password更改为1234。仍然是相同的输出。

即使经过上述检查,我仍然觉得FOR循环有问题。但是,我无法理解什么是错误的。

3 个答案:

答案 0 :(得分:3)

似乎你的for循环for (counter = 0; counter > 25; counter++)从未运行,因为你的计数器从0开始,但你的循环条件是计数器&gt; 25.只需将其更改为for (counter = 0; counter < 25; counter++)

答案 1 :(得分:1)

只需看一下你的for loop buddy语句即可 有一个小错误

for (counter = 0; counter < 25; counter++) {
  //your code
}

答案 2 :(得分:1)

如前所述,您需要更改循环条件。但是,就像现在一样,您正在测试密码的结尾。您需要使用strlen()来查找密码的长度,并且只测试这些字符:

...
#include <string.h>

int main()
{
    char password [25] = "qwerty1234";
    int counter, pass_len;
    int numberBool = 0;

    pass_len = strlen(password);
    for (counter = 0; counter < pass_len; counter++)
    ...