日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux fflush函数,fflush - wwliu的个人页面 - OSCHINA - 中文开源技术交流社区

發布時間:2025/3/17 linux 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux fflush函数,fflush - wwliu的个人页面 - OSCHINA - 中文开源技术交流社区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

函數名: fflush

功 能: 清除文件緩沖區,文件以寫方式打開時將緩沖區內容寫入文件

頭文件: #include

原型:int fflush(FILE *stream)

#include

#include

#include

#include

void flush(FILE *stream);

int main(void)

{

FILE *stream;

char msg[] = "This is a test";

/* create a file */

stream = fopen("DUMMY.FIL", "w");

/* write some data to the file */

fwrite(msg, strlen(msg), 1, stream);

clrscr();

printf("Press any key to flush DUMMY.FIL:");

getch();

/* flush the data to DUMMY.FIL without\

closing it */

flush(stream);

printf("\nFile was flushed, Press any key\to quit:");

getch();

return 0;

}

void flush(FILE *stream)

{

int duphandle;

/* flush the stream's internal buffer */

fflush(stream);

/* make a duplicate file handle */

duphandle = dup(fileno(stream));

/* close the duplicate handle to flush the DOS buffer */

close(duphandle);

}

返回值

fflush 的返回值類型是int類型,那么這個int類型具體的返回是什么呢?

如果成功刷新,fflush返回0。指定的流沒有緩沖區或者只讀打開時也返回0值。返回EOF指出一個錯誤。

注意:如果fflush返回EOF,數據可能由于寫錯誤已經丟失。當設置一個重要錯誤處理器時,最安全的是用setvbuf函數關閉緩沖或者使用低級I/0例程,如open、close和write來代替流I/O函數。

其他用法

fflush(stdin)刷新標準輸入緩沖區,把輸入緩沖區里的東西丟棄[

非標準

]

fflush(stdout)刷新標準輸出緩沖區,把輸出緩沖區里的東西打印到標準輸出設備上

注意事項

C和C++的標準里從來沒有定義過 fflush(stdin)。也許有人會說:“可是我用 fflush(stdin) 解決了這個問題,你怎么能說是錯的呢?”的確,某些

編譯器

(如VC6)支持用 fflush(stdin) 來清空輸入緩沖,但是并非所有編譯器都要支持這個功能(linux下的gcc就不支持,經我的GCC4.6.2測試),因為標準中根本沒有定義 fflush(stdin)。

MSDN 文檔里也清楚地寫著:

fflush on input stream is an extension to the C standard (fflush 操作輸入流是對C標準的擴充)。

以下是 C99 對 fflush 函數的定義:

int fflush(FILE *stream);

如果stream指向輸出流或者更新流(update stream),并且這個更新流最近執行的操作不是輸入,那么fflush函數將把任何未被寫入的數據寫入stream指向的文件(如標準輸出文件stdout)。否則,fflush函數的行為是不確定的。fflush(NULL)清空所有輸出流和上面提到的更新流。如果發生寫錯誤,fflush函數會給那些流打上錯誤標記,并且返回EOF,否則返回0。

由此可知,如果 stream 指向輸入流(如 stdin),那么 fflush 函數的行為是不確定的。故而使用 fflush(stdin) 是不正確的。

總結

以上是生活随笔為你收集整理的linux fflush函数,fflush - wwliu的个人页面 - OSCHINA - 中文开源技术交流社区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。