C语言中清除内存缓冲区的函数是什么??

还有什么常用的易错的函数,如fflush(stdin)之类的

是I/O 函数分为“带缓冲”的和“不带缓冲”的两类。

带缓冲的 I/O 函数写数据时,并不直接写磁盘介质,而是将数据先写到这块内存缓冲中,之后用户空间缓冲中的数据会被传送到系统缓冲中。

linux 内核会将系统缓冲中的数据送完磁盘驱动器(fsync函数可以加速这一过程),这之后,数据才真正的被写入磁盘。

因为目前内存的读写速度往往远大于硬盘的读写速度(常 ms 级)。因此,缓冲区的建立可以尽力避免太过频繁的写磁盘。

对于硬盘来说,写入一个字节可能跟写入一个扇区没什么两样,程序员每次写入的数据也许就几个字节,所以可以将每次写入的几个字节放入缓冲区,排列组合成一整块数据再写入,也能极大的提升效率。

扩展资料

1、带缓冲的 I/O 读函数读取数据之前,则会首先判断用户空间的进程缓冲区是否包含数据,如果没有,则继续判断系统缓冲区是否包含数据。

2、“带缓冲”的 I/O 读函数从磁盘读取数据时,并不只读取调用者指定的读取字节数。读函数可能一次性读取一个扇区(常常是 512B)保存在缓冲区里,只返回给程序员需要的 10 字节。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-26

C语言中清除内存缓冲区的函数是fflush( ),清除输入缓冲区用fflush(stdin); 其中stdin表示标准输入。

该函数通常用在输入类函数的前面,用以清除输入缓冲区中的内容,避免接收到上次残留的内容而出错。


举例如下:

1、不加fflush函数:

// 将输入的5个字符存放到数组str中,并输出
int i;
char ch, str[6]={'\0'};
for(i=0; i<5; i++)
{
    scanf("%c", &ch);
    str[i] = ch;
}
printf("%s\n", str);

// 程序只能输入三个字符(每个字符间包含一个回车符),因为不加fflush函数时,将残留在缓冲区中的回车符也当成了一个字符输入到数组str中。


2、加fflush函数:

int i;
char ch, str[6]={'\0'};
for(i=0; i<5; i++)
{
    fflush(stdin);  // 清除留在缓冲区中的回车符,确保接收到的是用户输入的字符
    scanf("%c", &ch);
    str[i] = ch;
}
printf("%s\n", str);

// 程序能正常输出

第2个回答  2012-08-20
是fflush()
第3个回答  2009-10-30
free()?本回答被提问者采纳

C语言中清除内存缓冲区的函数是什么??
是I\/O 函数分为“带缓冲”的和“不带缓冲”的两类。带缓冲的 I\/O 函数写数据时,并不直接写磁盘介质,而是将数据先写到这块内存缓冲中,之后用户空间缓冲中的数据会被传送到系统缓冲中。linux 内核会将系统缓冲中的数据送完磁盘驱动器(fsync函数可以加速这一过程),这之后,数据才真正的被写入磁...

_flushall函数简介
本文将为您详细介绍函数名为 "_flushall" 的功能和使用方法。这个函数在C语言编程中扮演着重要的角色,主要作用是清除所有缓冲区,以确保数据的即时输出,避免数据丢失或延迟。"_flushall" 函数的原型定义为:int _flushall( void ),其中 "int" 表示返回类型,"void" 表示函数不接受任何参数。通过调用...

c语言清楚缓存的两种方法fflush(stdin)和)scanf("%[^\\n]%*c")。scan...
fflush()函数是标准的作法。scanf("%*[^\\n]%*c")是用扫描集将缓冲区中的字符全部读取来实现清除缓冲区的动作。%*〔^\\n〕将逐个读取缓冲区中的'\\n'字符之前的其它字符,%后面的*表示将读取的这些字符丢弃,前遇到'\\n'字符时便停止读取操作,此时,缓冲区中尚有一个'\\n'字符遗留,所以后面...

c语言中的flush函数怎样用?
答案:在C语言中,flush函数常与文件操作相关,用于清空输出缓冲区,确保所有的数据被立即输出。在标准库中,并没有直接的flush函数,但可以通过调用相关函数实现类似功能。比如在stdio库中,使用`fflush`函数可以刷新指定的流,清空其缓冲区。详细解释:1. flush函数的概念与用途:在C语言中,当我们使用如...

C语言中如何清空输入输出缓冲区
最简单的是用fflush()函数。此函数包含在stdio.h头文件中,用来强制将缓冲区中的内容写入文件。函数原型:int fflush(FILE *stream) ;函数功能:清除一个流,即清除文件缓冲区.常用场合:一、ff(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃 fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里...

在C语言编程中什么时候需要用fflush(stdin)?
fflush函数刷新一个流,可以用来防止内存地址已经占满,当把这个流指向用户标准输入(stdin)时,可以清除目前缓冲区中的内容,输入回车也会被清楚掉,例如,在scanf()之后使用fflush(stdin)是当输入缓冲区(内存)满了的时候,自动清除输入流缓冲区中所有数据,其实现在内存这么大,每次输入的数据只有几个...

C语言fflush(stdin)函数是什么意思,在什么情况下用它
1、fflush(stdin)是清空输入缓冲区的意思。stdin就是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 一般就是指键盘输入到缓冲区里的东西。2、在清除文件缓冲区时使用,文件以写方式打开时将缓冲区内容写入文件。例:include <conio.h> include <io.h> include <stdio.h>...

c语言中的flush函数怎样用
C语言中flush函数的使用 在C语言中,`flush`并不是一个独立的函数,而是一个与输入输出流相关的操作。通常用于清空输出缓冲区,确保所有的输出数据被立即发送到目标设备。在标准库中,与`flush`功能相关的函数是`fflush`。下面将解释如何使用`fflush`函数。1. `fflush`函数的基本用法 `fflush`函数用于...

在C语言编程中什么时候需要用fflush(stdin)?
首先要明白,从键盘输入的数据会先存到缓冲区,然后在存放到内存中。但是数据存放到内存中之后,缓冲区的数据并没有释放。如果不给电脑一个清空缓冲区的命令就会造成输入无效的情况。所以需要用到fflush(stdin)释放缓冲区。具体在C语言中主要表现在getchar()等从键盘单个或逐个数据读取的函数上。

c语言中,flushall()有什么作用
flushall 添加义项 函数名: flushall功 能: 清除所有缓冲区用 法: int flushall(void);程序例:#include <stdio.h>int main(void){FILE *stream;\/* create a file *\/stream = fopen("DUMMY.FIL", "w");\/* flush all open streams *\/printf("%d streams were flushed.\\n",flushall());\/...

相似回答