当前位置: 首页 > news >正文

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

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

}

http://www.rkmt.cn/news/112378.html

相关文章:

  • 5步搞定SillyTavern版本升级:告别烦恼的完整指南
  • 16、深入了解Linux存储与设备管理
  • 如何获取美股实时行情:Python 量化交易指南
  • PHP 常量
  • Linux学习日记21:读写锁
  • 15、深入探索Vim寄存器:复制粘贴的高级技巧
  • 基于C#的FTP客户端实现方案
  • 16、Vim 复制粘贴与宏操作技巧全解析
  • ArcGIS中的字段类型
  • 移动端AI绘图:iPhone上实现3秒内图像生成的完整技术方案
  • 9、Vim 中运行 shell 命令及文件管理全解析
  • 《C语言电子新-2026最新版》-编程语言与程序
  • RocketMQ 高并发场景优化:消息压缩、批量发送与消费线程池调优
  • 5分钟掌握:安卓防撤回黑科技,从此不再错过任何重要信息
  • 11、Vim 文件操作与移动技巧全解析
  • allegro工艺边的制作和mark点放置
  • 旅行攻略助手:LobeChat规划完美行程
  • Beyond Compare 5完整激活指南:从问题排查到成功授权
  • 【C语言手撕算法】LeetCode-142. 环形链表 II(C语言)
  • 数组(练习)
  • LobeChat微信公众号文章开头生成技巧
  • LobeChat科研基金申请书撰写助手
  • 手握明星开源项目却不会赚钱?GOBI 2025 全球开源商业创新大会全日程发布,附参会指南!
  • 专业电竞的秘密:他们的路由器是怎么布置的呢?
  • 当InfluxDB还在“散步”,金仓数据库已经“起飞”了!——一次不太公平的时序对决实录
  • 字符设备驱动(5)
  • 智能字体协作者:AutoCAD字体自动修复的终极解决方案
  • Daily Prob 5
  • Applite:终极Mac软件管理神器,让Homebrew图形化操作如此简单
  • 如何实现 “右移”的智能监控,快速定位和恢复线上事故?