fopen(),fclose() 開啟/關閉檔案

來源:互聯網
上載者:User

標籤:after   函數   color   fopen   使用   關聯   清除   類型   file   

開啟/關閉/重新整理流

1. fopen() 開啟流

功能:

  1)fopen()開啟由 path指定的一個檔案。

  2)fdopen()擷取一個先有的檔案描述符,並使一個標準的I/O流與該描述相結合。此函數常用於由建立管道和網路通訊函數小所返回的描述符。因為這些特殊類型的檔案不能用標準I/O fopen函數開啟,我們必須先調用裝置專用函數以獲得一個檔案描述符,然後用fopen使一個標準I/O流與該描述符相關聯。

  3)fropen()在一個指定的流上開啟一個指定的檔案,如若該流已經開啟,則先關閉該流。若流已經定向,這fopen清除該定向。吃函數一般用於將一個指定的檔案代開為一個預定流,如:標準輸入、標準輸出和標準錯誤。

所需標頭檔:<stdio.h>

函數原型:

  FILE *fopen(const char *path, const char *mode);

  FILE *freopen(const char *path, const char *mode, FILE *stream);

  FILE *fdopen(int fd, char *mode);

參數:

  fopen: path 將要的開啟的指定檔案的絕對路徑; mode 檔案開啟的方式。

  freopen: path 要重新導向的檔案絕對路徑,mode 檔案開啟檔案, stream 已經開啟的流。

  fdopen:fd 已經開啟的檔案描述符, mode 檔案開啟檔案。

傳回值:

  成功:流指標  失敗:NULL

參數mode:

  r,rb:以唯讀方式開啟檔案,檔案必須已經存在

  對應檔案I/O:open(path, O_RDONLY);

  r+,rb+:以讀寫方式開啟檔案,檔案必須存在

  w,wb:以唯寫方式開啟檔案,若檔案存在,則將該檔案內容清空;若檔案不存在,則建立檔案。

  w+,wb+:以讀寫方式開啟檔案,若檔案存在,則將該檔案內容清空;若檔案不存在,則建立檔案。

  a,ab:以追加方式唯寫開啟檔案,若檔案不存在,則建立檔案;若檔案存在,寫入的資料會被追加到檔案末尾,檔案原先的內容保留。

  a+,ab+:以追加方式可讀寫開啟檔案,若檔案不存在,則建立檔案;若檔案存在,寫入的資料會被追加到檔案末尾,檔案原先的內容保留。

frepen()重新導向使用樣本

 1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4   FILE *fp; 5   if (argc < 2) 6   { 7     fprintf("Usage:%s filename\n", argv[0]); 8     return -1; 9   }10   freopen(argv[1], "w", stdout);    //將標準輸入重新導向為argv[1]所指定的檔案。11   fprintf("after freopen!\n");12   return 0;13 }14 輸出結果將在argv[1]指定的檔案中

 

 

2. fclose()關閉流

功能:關閉一個檔案流

所需標頭檔 <stdio.h>

函數原型:

  int fclose(FILE *fp);

參數:

  fp :要關閉的流。

傳回值:

  調用成功返回0;失敗返回EOF並設定errno

  值得注意的是,fclose()在關閉流之前,會先將緩衝區裡的資料輸出,如果標準I/O庫已經為該流分配了一個緩衝區,則釋放緩衝區。

  當一個進程正常終止時(直接調用exit()函數<_exit()終止的進程不會重新整理流>,或從main函數返回),則所有帶有未寫快取資料的標準I/O都會被重新整理,所有代課的標準I/O都被關閉。

 

 

3. 重新整理流

功能:強制重新整理一個流。此函數使該流所有未寫的資料都被傳遞到核心。

函數原型:

  int fflush(FILE *fp);

參數:

  fp:要重新整理的流。

 

fopen(),fclose() 開啟/關閉檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.