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/21 12:40:19

LobeChat能否支持灵魂出窍体验?意识分离现象科学解释模型

LobeChat&#xff1a;通往深度人机交互的现代AI前端引擎 在智能对话系统日益普及的今天&#xff0c;用户早已不满足于“问一句、答一句”的机械交互。他们渴望的是一个能记住过往对话、理解角色设定、处理文件甚至主动调用工具的“活体助手”。这种需求背后&#xff0c;是对AI拟…

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

播客批量下载工具完整操作指南

播客批量下载工具完整操作指南 【免费下载链接】PodcastBulkDownloader Simple software for downloading podcasts 项目地址: https://gitcode.com/gh_mirrors/po/PodcastBulkDownloader Podcast Bulk Downloader 是一款专为播客爱好者设计的批量下载工具&#xff0c;能…

作者头像 李华
网站建设 2026/4/18 22:25:20

“汪洁步道”团队博客 6:beta 阶段发布

一、对全世界 - 我们吹的牛实现了 视频链接&#xff1a; 二、对投资人 - 我们说到做到了 &#xff08;一&#xff09;项目NABCD分析 1.NABCD 1.1N-need **城市遛狗族**&#xff1a;雨雪后回家&#xff0c;狗爪沾泥沾沙&#xff0c;手动擦脚耗时费力还吵架。 **精装家庭**&…

作者头像 李华
网站建设 2026/4/18 11:26:50

10、Vim使用技巧:多文件管理与文件操作全解析

Vim使用技巧:多文件管理与文件操作全解析 1. 使用参数列表 参数列表比缓冲区列表更易于管理,是将缓冲区分组的理想选择。使用 :args {arglist} 命令,我们可以清空参数列表,然后用一个命令重新填充它。我们可以使用 :next 和 :prev 命令遍历参数列表中的文件,也可以…

作者头像 李华
网站建设 2026/4/15 11:18:54

【HarmonyOS NEXT】顶象验证码 SDK 接入实践

一、背景 在鸿蒙开发登录场景中&#xff0c;为拦截恶意登录&#xff08;如频繁输错密码、机器批量尝试&#xff09;&#xff0c;需接入顶象验证码SDK做前置风控校验&#xff1a;用户完成验证码交互后生成有效token&#xff0c;业务登录接口校验token合法性后&#xff0c;再执行…

作者头像 李华