一段代码带你理解输入缓冲区
2026/6/2 14:31:52 网站建设 项目流程

本文将多次使用C语言中的scanf与getchar函数,带你充分理解输入缓冲区。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{

/*
int ch=getchar();
//从输入缓冲区获取一个字符,返回值类型是int
//错误输入时返回EOF(end of file)
putchar(ch);
//打印一个字符

int ch=0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
*/
int num=0;
char m ='\0';
printf("1.实现只打印数字字符\n");
printf("2.输入缓冲区示例\n");
scanf("%d",&num);
switch (num)
{
case 1:
getchar();//清理输入缓冲区
printf("功能1\n");

while ((m = getchar()) != '\n')
{
if (m < '0' || m>'9')
{
continue;
}
putchar(m);
}
break;
case 2:
getchar();
printf("功能2\n");

char password[20] = { 0 };
printf("password:");
scanf("%s", password);
//数组名本身就是一个地址;在输入缓冲区不读空格,\n
//getchar();//读取了输入缓冲区中的\n
int ch = 0;
while ((ch = getchar()) != '\n')
{
;
}//彻底清理输入缓冲区;只有空格前的内容被password保存
printf("please confirm Y/N:");
int ret = getchar();
if ('Y' == ret || 'y' == ret)
{
printf("yes");
}
else
{
printf("no");
}
//没写48行代码时为什么功能不实现?
//在scanf执行完后输入缓冲区余下\n,getchar不等待直接拿走并赋值给ret
//进if语句判断后直接输出no
break;
default:printf("无效输入");

}
return 0;

}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询