利用for循环即可实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int i = 0;
char key[20] = { 0 };
for (i = 0; i < 3; i++)
{
printf("请输入密码:\n");
scanf("%s",key);
if (strcmp(key, "123456") == 0)//strcmp用于比较字符串长度
{
printf("登陆成功\n");
break;
}
else
{
printf("密码错误\n");
}
}
if (i == 3)
{
printf("三次密码错误,退出程序\n");
}
}
scanf()在读取数据时不检查边界,可能会造成内存访问越界;scanf_s()是其的扩展,会检测边界,避免程序漏洞,但其必须确认数组大小防止越界访问。
所以在本题内需要使用scanf,因为用户密码的输入不需准确告诉为多长,以免泄露密码。