scanf与getchar连用注意事项

2024-01-19 10:21:49 浏览数 (1)

在用scanf输入后,用回车键换行,且下一语句为getchar时,getchar会被回车键(相当于'/n')使用,因为scanf不能读取回车键、空格键等。

代码语言:javascript复制
#include<stdio.h>
#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的正常使用。

代码语言:javascript复制
#include<stdio.h>
#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;
}

0 人点赞