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

初识c语言————缓冲区字符滞留

今天我们来讲c语言中的缓冲区字符滞留


目录:

一.缓冲区为什么会有字符滞留

二.什么时候需要清理缓冲区字符滞留

三.什么时候不需要清理缓冲区字符滞留


下面我们正式学习c语言中的缓冲区字符滞留

一.缓冲区为什么会有字符滞留

1.我们使用键盘输入数字实际上就是我们向缓冲区输入数字

2.当我们使用输入函数读取的时候只有当这些输入函数遇到\n或者缓冲区满的时候才会进行读取,但是这些输入函数并不会直接把所有缓冲区的元素拿走,而只是拿走\n之前的元素(scanf函数遇到空格会停止),从而导致了缓冲区有字符滞留(\n)

   例如:

当我们使用scanf函数时,我们用键盘输入hello,scanf函数不会读取;当我们用键盘输入hello+回车(\n),scanf函数会读取数字,但只会读取\n之前的数字

二.什么时候需要清理缓冲区字符滞留

当我们同时使用多个不同类型的输入函数的时候,我们需要在每个函数之间进行清理缓冲区字符[while(num1=(getchar())!='\n'&&num1!=EOF)]

   例如:

当我们使用scanf函数读取hello\n的时候,缓冲区回滞留\n,当我们再次使用getchar或者scanf("%c")的时候,这些函数会直接读取\n,并不会发挥原本函数的功能

   注意:

1.scanf("%s", str);  // 读取 "hello"(遇到空格/换行停止)
2.getchar();         // 读取的是残留的 '\n',而不是预期的下一个字符
3.scanf("%c", &ch);  // 同样会直接读取 '\n'

三.什么时候不需要清理缓冲区字符滞留

当我们同时使用单一类型的输入函数的时候,我们不需要清理缓冲区字符滞留

   例如:

当我们使用scanf函数读取hello\n的时候,缓冲区回滞留\n,当我们再次使用scanf的时候(不包括,这些函数不会直接读取\n,并不会发挥原本函数的功能

   注意:

全部使用 `scanf()` 时不需要清理缓冲区,但格式字符串要正确:
1.数字/字符串输入:`%d`、`%f`、`%s` 会自动跳过空白符(包括 `\n`)。【空白符是指在屏幕上不可见,但具有特殊作用的字符,例如:空格,转义字符】
2.字符输入:`%c` **不会跳过空白符**,必须加空格(如 `" %c"`)。因为%c并不会像其他形式一样会自动跳过空白符,
在 `%c` 前加一个空格(即 `" %c"`),会**让 `scanf` 跳过所有前导空白符**,直到遇到第一个非空白字符。

http://www.xdnf.cn/news/17788.html

相关文章:

  • Cookie、Session、Token详解
  • 【嵌入式C语言】四
  • vscode使用keil5出现变量跳转不了
  • CTFShow PWN入门---Kernel PWN 356-360 [持续更新]
  • OpenCV图像平滑处理方法详解
  • 什么是主成分分析(PCA)和数据降维
  • Serverless 架构核心解析与应用实践
  • IPTV系统:开启视听与管理的全新篇章
  • redis中分布式锁的应用
  • 玩转Docker | 使用Docker部署JSON格式化工具ZJSON
  • 【论文阅读】基于多变量CNN模型的可穿戴外骨骼机器人人体运动活动识别
  • 计算机视觉--opencv(代码详细教程)(二)
  • Webpack Plugin 深度解析:从原理到实战开发指南
  • 【漏洞复现】WinRAR 目录穿越漏洞(CVE-2025-8088)
  • 服务器的安全检测和防御技术
  • Uniapp 条件编译详解
  • 机器学习--KNN算法
  • MySQL中的DML(二)
  • Python包管理工具uv使用教程
  • 语义 HTML 的核心价值:提升 SEO 与 AI 理解
  • 监控插件SkyWalking(一)原理
  • 【STM32入门教程】stm32简介
  • (第十五期)HTML文本格式化标签详解:让文字更有表现力
  • 《量子雷达》第5章 量子雷达发射机 预习2025.8.14
  • 腾讯混元全新开源Hunyuan-GameCraft:高动态交互式游戏视频生成框架
  • 【入门级-C++程序设计:13、STL 模板:栈(stack)、队 列(queue)、 链 表(list)、 向 量(vector) 等容器】
  • # 2025全球AI游戏市场研究报告:行业洞察与未来趋势
  • Unity人形角色IK优化指南
  • Vue3 vxeTree树形组件完全指南:从入门到精通的完整使用教程
  • 解决Maven编译时JAVA_HOME配置错误问题:从报错到根治的完整方案