我是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循环有问题。但是,我无法理解什么是错误的。
答案 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++)
...