我在练习C语言密码确认任时候碰到问题
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main() {
char password1[] = { 0 };
char password2[] = { 0 };
printf("请输入:>");
scanf("%s", password1);
int i = 0;
for (i = 0; i < 3; i++) {
printf("请确认密码:>");
scanf("%s", password2);
if (strcmp(password1, password2) == 0) {
printf("成功\n");
break;
}
else
{
printf("失败\n");
}
}
if (3 == i) {
printf("三次失败,退出程序");
}
return 0;
}
怎么样才能让他不报错
char password1[] = { 0 };
这么定义的话,数组只有一个元素啊。你指定一下数组的大小吧
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main() {
char password1[50] = { 0 };
char password2[50] = { 0 };
printf("请输入:>");
scanf("%s", password1);
int i = 0;
for (i = 0; i < 3; i++) {
printf("请确认密码:>");
scanf("%s", password2);
if (strcmp(password1, password2) == 0) {
printf("成功\n");
break;
}
else
{
printf("失败\n");
}
}
if (3 == i) {
printf("三次失败,退出程序");
}
return 0;
}
数组没有分配大小,内存会乱~:
楼上两位说的很对,你只定义了一个大小的数组,却写入了超过这个数量的字符串,其实已经是数组越界了。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!