scanf() getchar()输入问题

时间:2022-10-28 22:57:36
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{int ret = 0;
int ch = 0;
char mima[20] = { 0 };
printf("请输入密码:");
scanf("%s", mima);
printf("请确认(Y/N):");
ret = getchar();
if (ret == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}

在输入123456后回车

结果直接结束,并未输入(Y/N)

scanf() getchar()输入问题

通过监视可知

scanf() getchar()输入问题

ret值是10,有ASII码可知其对应为回车(\n);被ret读取,

解决方法在ret前再加个getchar();读取回车(\n),结果如下:

scanf() getchar()输入问题

也可以用while()循环解决,如下:

scanf() getchar()输入问题