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

初识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.dtcms.com/a/331163.html

相关文章:

  • 天马 TM150XDHG01-04 宽温高亮液晶模组技术档案
  • **标题:发散创新,探索编程中的平衡设计****摘要**:本文将探讨如何在编程中运用平衡设计思想,通过实例分析与
  • STM32F103 basic定时器的介绍和应用
  • 2021-2025全国监测国控断面地表水水质数据
  • P12348 [蓝桥杯 2025 省 A 第二场] 交互
  • 每日任务day0814:小小勇者成长记之钓鱼日记(字典推导式)
  • gpt2架构学习(1)
  • PDM 如何通过 ERP/PLM 释放数据价值?
  • 力扣面试150(56/150)
  • CodeTop 复习
  • [免费]基于Python的影视数据可视化分析系统(Flask+echarts)【论文+源码+SQL脚本】
  • 实战指南|消防管理系统搭建全流程解析
  • Android 常用框架汇总
  • AI需要提供情绪价值吗?GPT-4o风波背后的安全与孤独之战
  • 云原生俱乐部-杂谈1
  • python爬虫学习(2)
  • vite.config.js详解;本地配置获取真实请求地址
  • mysql——count(*)、count(1)和count(字段)谁更快?有什么区别?
  • 《软件工程导论》实验报告三 需求分析建模(二)
  • SQL LEFT JOIN 与 WHERE 条件的隐藏坑
  • anaconda创建pytorch1.10.0和pytorch2.0.0的GPU环境
  • iOS 26 一键登录失效:三大运营商 SDK 无法正常获取手机号
  • 装个 Oracle 23ai 本地版玩玩~
  • 短剧小程序系统开发:赋能创作者,推动短剧艺术创新发展
  • SpringBoot+Vue线上部署MySQL问题解决
  • CPP模板编程
  • AI驱动的智能爬虫架构与应用
  • openvsx搭建私有插件仓库
  • 设计模式有哪些
  • 2022_ISG_CTF-rechall详解(含思考过程)