#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//输入密码确认
int main()
{
char get[20] = {0};
char get2[20] = {0};
int ch = 0;
printf("请输入您的六位数密码:\n");
scanf("%s", get);
printf("请再次确认您的六位数密码:\n");
scanf("%s", get2);
if (get == get2)
{
printf("请输入“Y”确认此次操作!\n");
ch = getchar();
if (ch == 'Y')
printf("确认成功!已完成操作!");
}
else
printf("您两次的密码不正确!请重新启动!");
return 0;
}
123456
请再次确认您的六位数密码:
123456
您两次的密码不正确!请重新启动!
修改如下,除了字符串比较处理修改外,在输入Y字符串要增加先fflush(stdin)清空输入缓冲区
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>
//输入密码确认
int main()
{
char get[20] = {0};
char get2[20] = {0};
int ch = 0;
printf("请输入您的六位数密码:\n");
scanf("%s", get);
printf("请再次确认您的六位数密码:\n");
scanf("%s", get2);
if (strcmp(get,get2)==0)
{
printf("请输入“Y”确认此次操作!\n");
fflush(stdin);
ch = getchar();
if (ch == 'Y')
printf("确认成功!已完成操作!");
}
else
printf("您两次的密码不正确!请重新启动!");
return 0;
}
判断字符串相等不能用==,需要用:
#include<string.h>
strcmp(str1, str2); //上一行是 头文件,这一行比较两个字符串str1和str2是否相等,相等就返回0
并且,你读入ch之前,需要先将缓冲区的换行符读出来,你的代码修改为(注意注释):
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h> //注意添加头文件
//输入密码确认
int main()
{
char get[20] = {0};
char get2[20] = {0};
int ch = 0;
printf("请输入您的六位数密码:\n");
scanf("%s", get);
printf("请再次确认您的六位数密码:\n");
scanf("%s", get2);
if (strcmp(get, get2)==0) //等于0表示两者相等
{
printf("请输入“Y”确认此次操作!\n");
ch = getchar(); //第一个getchar会读取你输入get2时的换行符(回车)
ch = getchar();
if (ch == 'Y')
printf("确认成功!已完成操作!");
} else
printf("您两次的密码不正确!请重新启动!");
return 0;
}
字符串的比较不是用==是用strcmp()函数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>
//输入密码确认
int main()
{
char get[20] = {0};
char get2[20] = {0};
int ch = 0;
printf("请输入您的六位数密码:\n");
scanf("%s", get);
printf("请再次确认您的六位数密码:\n");
scanf("%s", get2);
if (strcmp(get,get2)==0)
{
printf("请输入“Y”确认此次操作!\n");
getchar();//消除缓存
ch = getchar();
if (ch == 'Y')
printf("确认成功!已完成操作!");
}
else
printf("您两次的密码不正确!请重新启动!");
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!