最近我发现有些刚开始学习的程序员并不是能够很好的解读一篇程序,或者看到了不知道是做什么的,这里我就详细解释一篇密码验证的代码,让大家对程序有更深入的认知了解,程序中的知识点只涉及到分支循环,并不难,所以多看几遍理解起来并不会太难,当然了学习过一段时间的同学就没必要看了,程序的很多地方也只是为多写一点东西,并不是最优解
#define _CRT_SECURE_NO_WARNINGS 1 //无视SDL安全检查 忽略scanf函数带来的有可能存在的内存泄露的问题;#define 宏定义结尾不需要加;
#pragma warning(disable:6031) //不打印6031这条警告
#include <stdio.h> //stdio.h——包含printf这个函数的头文件-使用pr需要加上这个头文件 是stdio不是stduio
#include <string.h> //使用与字符串相关操作的库函数时需要导入这个头文件
int Check_Key(char Key[], char KeyValue[], int Flag)
{
for (int i = 0; i < 3; i++)
{
printf("请输入五位数的密码:\r\n");
scanf("%s", Key); //scanf函数是捕获键盘输入的函数以空白符-Tab键、空格、回车等为结尾,所以尽量避免"%d\n"、"%d %d"等写法的出现
if (strlen(Key) != 5)
{
printf("密码输入不合法,还有%d次机会!\r\n", (2 - i));
continue; //continue 不执行之后的所有函数开始下一次循环
}
if (strcmp(Key, KeyValue) == 0)
{
Flag = 1;
break; //break 退出离得最近的循环
}
else
{
printf("密码输入错误,还有%d次机会!\r\n", (2 - i));
}
}
return Flag;
}
int main() //main函数是一个工程中编译器开始执行程序的地方,是工程中唯一的
{
char Key[6] = { 0 }; //定义一个接收输入的密码的字符数组
char KeyValue[] = "A5233";//用于存放正确密码的字符数组,字符串是" ",字符是' ',在编程中所有符号都是英文字符,并且在工程命名等也该避免出现中文,函数和变量等命名规则一般遵循驼峰命名法——小驼峰keyValue,大驼峰KeyValue;
int Flag = 0; //判断密码是否输入正确的标志位
if (Check_Key(Key, KeyValue, Flag))//if也可以用来执行一个函数
{
printf("密码输入正确!\r\n");
}
else
{
printf("密码输入错误,已锁定!\r\n");
}
return 0; //return 是跳到当前函数的最后一步,即下一步就是退出当前函数,return的值只能是一个表达式或者某个值
}
关于scanf的问题可以移步我的另一篇博客
链接: 关于scanf在VS2022中报错的解决办法