news 2026/4/22 9:15:33

一段代码带你理解输入缓冲区

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一段代码带你理解输入缓冲区

本文将多次使用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;

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 2:34:55

9、Vim 中运行 shell 命令及文件管理全解析

Vim 中运行 shell 命令及文件管理全解析 1. 在 Vim 中运行 Shell 命令 在 Vim 里,无需退出就能轻松调用外部程序,还能把缓冲区内容作为标准输入传递给命令,或者用外部命令的标准输出填充缓冲区。不过,这些命令在终端版 Vim 中使用效果最佳,若使用 GVim 或 MacVim,可能没…

作者头像 李华
网站建设 2026/4/21 16:08:31

朋友圈文案润色:LobeChat让你更有格调

LobeChat&#xff1a;让AI对话更有格调 在朋友圈发一条状态&#xff0c;配图是夕阳下的咖啡杯&#xff0c;文字写着“生活需要一点慢”。你犹豫了一下——这句太普通了&#xff0c;有没有更打动人的表达&#xff1f;如果此刻有个懂你情绪、又擅长文字的助手就好了。 现在&#…

作者头像 李华
网站建设 2026/4/20 6:56:12

26、Vim搜索与自动补全功能全解析

Vim搜索与自动补全功能全解析 1. 替代grep插件 在Vim中,将多文件搜索外包给外部程序十分便捷。我们只需更改 grepprg 和 grepformat 设置,然后执行 :grep 命令,搜索结果就会出现在快速修复列表中。无论实际调用的是哪个程序,其接口几乎相同。 不过,不同程序存在重…

作者头像 李华
网站建设 2026/4/20 23:41:57

利用LobeChat构建多语言AI翻译助手平台

利用LobeChat构建多语言AI翻译助手平台 在跨国协作日益频繁的今天&#xff0c;一个能实时理解上下文、准确处理专业术语、还能应对PDF或字幕文件的翻译工具&#xff0c;早已不再是“锦上添花”&#xff0c;而是许多团队的刚需。然而市面上大多数翻译服务依然停留在“输入即输出…

作者头像 李华