在用scanf输入后,用回车键换行,且下一语句为getchar时,getchar会被回车键(相当于'/n')使用,因为scanf不能读取回车键、空格键等。
#define _CRT_SECURE_NO_WARNINGS
int main()
{
char password[10] = { 0 };
printf("输入密码:");
scanf_s("%s", password);
printf("请确认密码:Y/N");
int ch = getchar();
if (ch == 'Y')
printf("确认成功!");
else
printf("确认失败!");
return 0;
}
当我们输入密码回车后,将会直接结束程序,因为此时'/n'被getchar读取了,导致确认失败。
如果我们想正常使用getchar时,需要在二者之间再加上一个getchar,用来吸收'/n',以保证原本意图的getchar的正常使用。
#define _CRT_SECURE_NO_WARNINGS
int main()
{
char password[10] = { 0 };
printf("输入密码:");
scanf_s("%s", password);
getchar();
printf("请确认密码:Y/N");
int ch = getchar();
if (ch == 'Y')
printf("确认成功!");
else
printf("确认失败!");
return 0;
}