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

C语言能否使⽤ fflush( ) 函数清除多余的输⼊?

一、问题

        在从终端输⼊数据时,很可能会输⼊多余的数据,那么能否使⽤ fflush( ) 函数清除呢?

二、解答

        fflush( ) 函数只是⽤在⽂件以写的⽅式打开时,将缓冲区内容写⼊到⽂件。因此 fflush( ) 函数仅对输出流有效,对输⼊流并不能⽤于放弃剩余的输⼊。可通过如下代码了解 fflush( ) 函数是否清除了缓冲区中多余的输⼊。

#include <stdio.h>
int main()
{int integer;char string[81];printf("Enter a sentence of four words with scanf:");for (integer = 0; integer < 4; integer++){scanf("%s", string);printf("%s\n", string);}fflush(stdin);printf("Enter the same sentence with gets:");gets(string);printf("%s\n", string);
}

此例的运⾏结果为:

Enter a sentence of four words with scanf:i am boy !!!! 
i
am
a
boy 
Enter the same sentence with gets:!!!!

        由此可知,fflush( ) 函数在清除缓冲区中的内容时,并没有将缓冲区中多余的数据清除, 使得调⽤ gets( ) 函数获取字符串时获取了多余的数据“!!!!”。

说明:

        fflush( ) 函数⾮标准库函数,因此在部分编译环境中可以清除多余的字符,在部分环境中不可以清除多余的字符,例如,在 VC6.0 编译环境中可以清除多余的输⼊字符,但是使⽤ gcc 编译程序时,fflush( ) 函数不可以清除多余的输⼊字符。上述运⾏结果是在 gcc 环境中编译得出的结果。

        在gcc 编译环境中,fflush( ) 函数⽆法清除多余的输⼊,那么此时要怎样清除多余的输⼊呢?

        若是希望清除掉 scanf( ) 函数之后所剩下的换⾏符和其它的未知输⼊,需要重写 scan( )  函数,或者使⽤代码语句,屏蔽掉后⾯的字符,例如:

while ((ch = getchar() != '\n' && ch != EOF))/*清除*/;

        没有什么标准的⽅法能够清除掉标淮输⼊流中未读取的字符,因为末读取字符也可能来⾃其他的操作系统的输⼊缓冲区。

三、总结

        若需要严格丢弃多余输⼊的字符,可以参见使⽤的系统的相关技术。

相关文章:

C语言能否使⽤ fflush( ) 函数清除多余的输⼊?

一、问题 在从终端输⼊数据时&#xff0c;很可能会输⼊多余的数据&#xff0c;那么能否使⽤ fflush( ) 函数清除呢&#xff1f; 二、解答 fflush( ) 函数只是⽤在⽂件以写的⽅式打开时&#xff0c;将缓冲区内容写⼊到⽂件。因此 fflush( ) 函数仅对输出流有效&#xff0c;对输…...

如何把试卷上的字去掉再打印?分享三种方法

如何把试卷上的字去掉再打印&#xff1f;随着科技的不断发展&#xff0c;现代教育和学习方式也在逐渐变革。在学习过程中&#xff0c;我们经常需要对试卷进行整理和分析&#xff0c;以便更好地掌握知识点和复习。然而&#xff0c;传统的试卷整理方法往往效率低下且容易出错。幸…...

Android开机动画压缩包zip,自制开机动画(基于Android10.0.0-r41)

文章目录 Android开机动画压缩包zip&#xff0c;自制开机动画1.Android加载压缩包原理2.自制开机动画 Android开机动画压缩包zip&#xff0c;自制开机动画 1.Android加载压缩包原理 这里有个md文件我们看下 核心部分, 首先要创建一个文件叫做desc.txt&#xff0c;这是规定的…...

手机站怎么推广

随着手机的普及和移动互联网的快速发展&#xff0c;越来越多的人开始使用手机进行在线购物、社交娱乐、阅读资讯等&#xff0c;同时也催生了越来越多的手机站的出现。但是&#xff0c;在海量的手机站中&#xff0c;要让自己的手机站脱颖而出&#xff0c;吸引更多用户访问和使用…...

Mysql疑难报错排查 - Field ‘XXX‘ doesn‘t have a default value

项目场景&#xff1a; 数据库环境 &#xff1a;mysql8; 工程使用&#xff1a;MyBatisPlus 表情况&#xff1a; 问题描述 某一个插入语句使用了 MyBatisPlus 的 save 方法&#xff0c;因为end_time1 end_time2都并没有值&#xff0c;所以在MyBatisPlus默认情况下&#xff0c;…...

YOLOv8_obb预测流程-原理解析[旋转目标检测理论篇]

YOLOv8_obb的预测流程,主要分预处理模块、推理模块和后处理模块。这里面有很多内容是和目标检测预测流程是重合的,主要区别在于Angle分支、NMS后处理以及regularize_rboxes部分。本文也主要介绍一下这三个模块,其他模块可以结合YOLOv8预测流程-原理解析[目标检测理论篇]一起…...

02JAVA字符串和集合

1.字符串 1.String 介绍: String在java.lang包下,使用不需要导包,String代表字符串,带""字符串都是String类的对象 字符串的特点: 字符串不可变,他们的值在创建后不能被改变 字符串效果相当于(char[]),底层原理是字节数组(byte[]) String构造方法: String 变量名 ne…...

Qt如何让按钮的菜单出现在按钮的右侧

直接上代码&#xff0c;我们用到了一个eventfilter的函数功能。这个函数比较厉害和重要&#xff0c;大家务必经常拿出来看看。 void MainWindow::initMenu() { QMenu* menuLiXiang new QMenu; QAction* actXiangMuZhangCheng new QAction("项目章程"); …...

C++的类和new和delete和菱形继承机制

文章目录 参考虚函数使用虚函数的class结构相关实现源码IDA反编译子类虚表和父类虚表调用函数菱形继承 参考 https://showlinkroom.me/2017/08/21/C-%E9%80%86%E5%90%91%E5%88%86%E6%9E%90/ https://www.cnblogs.com/bonelee/p/17299985.html https://xz.aliyun.com/t/5242?t…...

Redis教程(二十二):Redis的过期删除和缓存淘汰策略

传送门:Redis教程汇总篇,让你从入门到精通 一、过期删除策略 Redis 中的过期删除策略是与 Redis 管理键的生命周期相关的一系列操作,用于删除过期的Key以释放内存。Redis 提供了三种主要的过期删除策略: 1、惰性删除(Lazy Expiration) 工作原理:当客户端尝试访问一个…...

Lodop 实现局域网打印

文章目录 前言一、Lodop支持打印的方式lodop 打印方式一般有3种&#xff1a;本地打印局域网集中打印广域网AO打印 二、集成步骤查看lodop 插件的服务端口&#xff1a;查看ip后端提供接口返回ip&#xff0c;前端动态获取最后步骤 前言 有时候会根据不同的ip来获取资源文件&…...

HarmonyOS(二十四)——Harmonyos通用事件之触摸事件

1.触摸事件。 触摸事件是HarmonyOS通用事件的一种事件之一&#xff0c;当手指在组件上按下、滑动、抬起时触发。 名称是否冒泡功能描述onTouch(event: (event?: TouchEvent) > void)是手指触摸动作触发该回调&#xff0c;event返回值见下面TouchEvent介绍。 2. TouchEve…...

2024-前端面试的正确打开方式(GitHub火爆场景题剖析)

写在前面 最近前端面试大家有没有感觉到场景题的压迫感&#xff01;&#xff01;&#xff01; 很显然普通面试八股不会怎么更新&#xff0c;而且就前端来说&#xff0c;面试并不是真正困难的&#xff0c;常规八股显示不出面试者的技术水平。 前端作为一个技术行业&#xff0c…...

Vue3项目炫酷实战,检测密码强度值

在前端项目开发中&#xff0c;确保用户密码的强度是保护账户安全的重要措施。本文将演示如何使用Vue 3实现一个简单的密码强度检测功能。通过实时反馈&#xff0c;帮助用户创建更安全的密码&#xff0c;从而提升整体系统的安全性。无论您是前端开发新手还是经验丰富的开发者&am…...

PHP实现抖音小程序用户登录获取openid

目录 第一步、抖音小程序前端使用tt.login获取code 第二步、前端拿到code传给后端 第三步、方法1 后端获取用户信息 第四步、方法2 抖音小程序拿到用户信息把用户信息传给后端 code2Session抖音小程序用户登录后端文档 第一步、抖音小程序前端使用tt.login获取code 前端 …...

Linux进程无法被kill

说明&#xff1a;记录一次应用进程无法被kill的错误&#xff1b; 场景 在一次导出MySQL数据时&#xff0c;使用下面的命令&#xff0c;将数据库数据导出为.sql文件&#xff0c;数据量大&#xff0c;导出时间长&#xff0c;于是我就将服务器重启了。 mysqldump -u username -…...

MySQL binlog三种模式

1.statement statement 记录的是sql语句。比如一条sql&#xff0c;update table_user set age 20 where id between 1 and 100。这条sql会更新100条数据&#xff0c;但是statement 模式下只会记录这条sql语句。 优点&#xff1a;不需要记录数据的变化&#xff0c;减少了bin …...

【CentOS 7】挑战探索:在CentOS 7上实现Python 3.9的完美部署指南

【CentOS 7】挑战探索&#xff1a;在CentOS 7上实现Python 3.9的完美部署指南 大家好 我是寸铁&#x1f44a; 总结了一篇【CentOS 7】挑战探索&#xff1a;在CentOS 7上实现Python 3.9的完美部署指南详细步骤✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 此篇教程只适用于p…...

oracle删除表空间和用户命令

创建表空间和用户可参考 ORACLE创建表空间,用户,修改密码,分配权限,以及导入导出_oracle表空间的密码-CSDN博客 1.删除表空间 --删除空的表空间&#xff0c;但是不包含物理文件 drop tablespace tablespace_name; --删除非空表空间&#xff0c;但是不包含物理文件 drop tabl…...

企业微信hook接口协议,ipad协议http,获取未发送群发列表

获取未发送群发列表 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"1753cdff-0501-42fe-bb5a-2a4b9629f7fb" } 返回示例 {"data": {"listdata": [{"now_cnt&qu…...

给SoC新手的保姆级指南:手把手用Verilog实现一个APB总线读写控制器

给SoC新手的保姆级指南&#xff1a;手把手用Verilog实现一个APB总线读写控制器 第一次接触AMBA总线时&#xff0c;那些密密麻麻的时序图总让人望而生畏。作为ARM公司设计的片上总线标准&#xff0c;APB(Advanced Peripheral Bus)以其简单的两相握手协议成为初学者理解总线通信的…...

AI编程实战:从零到一搭建全栈项目

1. 引入 在现代 AI 工程中&#xff0c;Hugging Face 的 tokenizers 库已成为分词器的事实标准。不过 Hugging Face 的 tokenizers 是用 Rust 来实现的&#xff0c;官方只提供了 python 和 node 的绑定实现。要实现与 Hugging Face tokenizers 相同的行为&#xff0c;最好的办法…...

2026年4月3日 理论基石:数据量与模型参数量的关系

文章目录1. 理论基石&#xff1a;数据量与模型参数量的关系Kaplan Scaling Laws (OpenAI, 2020)Chinchilla Scaling Laws (DeepMind, 2022)2. 实战计算&#xff1a;针对你的 nanoGPT 实验第一步&#xff1a;估算总 Token 数第二步&#xff1a;计算训练步数 (max_iters)第三步&a…...

氢能多能利用调度系统 -NSGA-II多目标优化,实现氢能-电能-交通多能耦合系统的24小时优化调度,包含电解制氢、可再生能源、储氢、掺氢燃气轮机、氢燃料电池和氢电动汽车等关键设备研究(Matlab)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

从‘滋滋’声到过认证:一个Buck电源的EMI实战整改笔记(附PCB布局优化技巧)

从‘滋滋’声到过认证&#xff1a;一个Buck电源的EMI实战整改笔记&#xff08;附PCB布局优化技巧&#xff09; 1. 问题浮现&#xff1a;EMI测试中的异常现象 那是一个周五的下午&#xff0c;实验室的EMI测试仪屏幕上跳动的红色曲线格外刺眼。我们团队开发的IoT设备在CE认证测试…...

使用vue3+ts构建企业级文件传输管理系统:状态管理、性能优化与用户体验的深度实践

使用vue3+ts构建企业级文件传输管理系统:状态管理、性能优化与用户体验的深度实践 在现代企业应用中,文件传输是核心功能之一。一个高效的传输管理系统不仅需要处理大量文件,还需提供直观的状态反馈、灵活的操作选项和流畅的用户体验。今天,我将分享一个基于Vue 3和TypeSc…...

AutoCAD数据处理的.NET解决方案:ACadSharp全功能指南

AutoCAD数据处理的.NET解决方案&#xff1a;ACadSharp全功能指南 【免费下载链接】ACadSharp C# library to read/write cad files like dxf/dwg. 项目地址: https://gitcode.com/gh_mirrors/ac/ACadSharp 在工程数字化时代&#xff0c;如何高效处理AutoCAD文件数据已成…...

苍穹外卖day10(黑马程序员)

苍穹外卖 day10 笔记 WebSocket 什么是 WebSocket WebSocket 是一种全双工的网络通信方式&#xff1a;客户端和服务器建立连接之后&#xff0c;双方都可以随时主动给对方发消息&#xff0c;不必像传统网页那样「每次都要重新发起一次请求」。 可以把它理解成&#xff1a; HTTP&…...

实战演练:在快马平台构建并部署一个完整的云原生博客系统

实战演练&#xff1a;在快马平台构建并部署一个完整的云原生博客系统 最近在尝试云原生技术栈时&#xff0c;发现InsCode(快马)平台特别适合做全流程的实战演练。这里记录下如何用这个平台快速搭建一个包含前后端和数据库的博客系统&#xff0c;并实现自动化部署的全过程。 项…...

SearXNG 多架构 Docker 镜像:支持 amd64、arm64 和 arm/v7 的完整指南

SearXNG 多架构 Docker 镜像&#xff1a;支持 amd64、arm64 和 arm/v7 的完整指南 【免费下载链接】searxng-docker The docker-compose files for setting up a SearXNG instance with docker. 项目地址: https://gitcode.com/gh_mirrors/se/searxng-docker 想要在五分…...