关于清除缓冲区的问题

在编写图书管理系统时遇到一个问题,当输入非整数时,scanf无法从缓冲区获取数据,导致无限循环。本文介绍了四种清除C++缓冲区的方法:fflush(stdin)、setbuf(stdin, NULL)、while循环读取直到' '和使用cin.ignore(INT_MAX, ' ')。其中,cin.ignore()被认为是最好的选择,因为它简洁高效。" 128468611,5564205,华为OD机试真题解析:核酸检测效率优化Java实现,"['华为机试', '编程挑战', '算法', 'Java', '数据结构']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在自己写图书管理系统项目的时候,遇到了挺多问题的。这个问题比较严重,就是在自己循环增加图书的时候用char c=getchar()
取得是缓冲区字符,因此不知道缓冲区是否还会存在数据。所以有一下几种方法;
   所谓缓冲区,就是字符由键盘输入的时候,先进缓冲区,不会直接进入硬盘,这样相对来说能提高效率,scanf和cin都是从缓冲区去获取数据的。
     以下例子是关于缓冲区的例子:

#include<stdio.h>
void main()
{
        int m;
        fputs("请输入一个数字:",stdout);                    //标准输出到硬盘上
        scanf("%d",&m);
        printf("%d",m);
}

     先介绍一下fputs函数,fgets()函数是从文件中读取数据,fputs函数是将数据写入到文件中。例如:
         

          FILE *fp=fopen("test.txt","w");

          char s1[20]="hello world";

          char *s2="hello C";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值