fflush
时间: 2023-07-28 09:29:09 浏览: 72
fflush 是 C 标准库中的一个函数,用于将缓冲区中的数据立即输出或者清空缓冲区。fflush 的原型为:
```c
int fflush(FILE *stream);
```
其中 stream 参数表示要刷新的文件流,如果 stream 为 NULL,则刷新所有输出流。fflush 返回值为 0 表示成功,返回 EOF 表示失败。
一般情况下,当我们使用 printf 或者 fprintf 等输出函数输出数据时,数据会先被缓存在内存中,等到缓冲区满了或者程序结束时才会被输出。如果我们希望立即将数据输出到终端或者文件,可以调用 fflush 函数来刷新缓冲区。
相关问题
fflush和fsync
fflush和fsync都是用来将缓冲区的数据写入到文件中的函数,但是它们有一些区别。
fflush函数的作用是将缓冲区中的数据立即写入到文件中,并清空缓冲区。fflush函数只对标准I/O流有效,对于其他类型的文件描述符则没有作用。fflush函数返回0表示成功,返回EOF表示失败。
而fsync函数的作用是将文件的所有修改缓冲区都写入磁盘中,以确保数据不会丢失。fsync函数只对文件描述符有效,对于标准I/O流则没有作用。fsync函数返回0表示成功,返回-1表示失败。
因此,如果只需要将缓冲区中的数据写入文件中,可以使用fflush函数;如果需要将文件的所有修改都写入磁盘中,可以使用fsync函数。
c语言fflush函数用法
fflush函数用于刷新输出缓冲区,保证缓冲区中的数据被立即输出到文件或终端上。
函数原型:
```c
int fflush(FILE *stream);
```
参数说明:
- stream:指向文件的指针,或者是标准输入输出流stdin、stdout、stderr的指针。如果stream为NULL,则会刷新所有输出流。
返回值:
- 若成功,返回0
- 若失败,返回EOF
示例:
```c
#include <stdio.h>
int main() {
FILE *fp;
char str[60];
fp = fopen("test.txt", "w+");
fprintf(fp, "This is testing for fflush...\n");
fflush(fp);
fprintf(fp, "This is testing for fflush again...\n");
fclose(fp);
return 0;
}
```
在上面的示例中,我们打开一个文件,写入了一行字符串后使用fflush函数刷新缓冲区,然后再写入一行字符串。最终,我们关闭文件并结束程序。
使用fflush函数可以确保数据被立即写入文件,而不是留在缓冲区中等待下一次写操作。
阅读全文