1. 程式人生 > >嵌入式Linux C程式設計學習之路(十)——標準IO fopen/fclose

嵌入式Linux C程式設計學習之路(十)——標準IO fopen/fclose

  1. 標準IO與檔案IO的對應函式

檔案IO:                                             標準IO

open                                                 fopen

close                                                 fclose

lseek                                                 fseek, rewind

read                             讀寫函式比較多(分三類,全快取、行快取和無快取)

write

2. fopen函式

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

返回值:FILE *  檔案流指標,檔案流指標類似於檔案IO 中的檔案描述符,定義成struct_IO_FILE,在/usr/include/libio.h ,裡面包含讀寫快取的首地址、大小、位置指標等。

  標準的輸入流:stdin   0

  標準的輸出流:stdout  1

標準的出錯流:stderr   2

Mode:類似於檔案IO的flag

r或rb

開啟只讀檔案,該檔案必須存在。

r+或r+b

開啟可讀寫的檔案,該檔案必須存在。

w或wb

開啟只寫檔案,若檔案存在則檔案長度清為0,即會擦些檔案以

前內容。若檔案不存在則建立該檔案。

w+或w+b或wb+

開啟可讀寫檔案,若檔案存在則檔案長度清為零,即會擦些檔案

以前內容。若檔案不存在則建立該檔案。

a或ab

以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,

如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容

會被保留。

mode整理如下:

Ø  b:二進位制檔案

Ø  r: 只讀方式開啟檔案,檔案必須存在;

Ø  w或a:只寫方式開啟檔案,檔案不存在則建立;

區別: w等價O_TRUNC,a等價O_APPEND;    

Ø  +:讀寫方式開啟檔案,檔案必須存在;

例:以讀寫方式開啟一個檔案,該檔案必須存在:   r+

    以追加方式開啟一個檔案,若檔案不存在,則建立: a或a+   

fopen建立的檔案許可權:0666 & (~umask)

3. fclose

int fclose(FILE *stream)

Ø  fclose()呼叫成功返回0,失敗返回EOF,並設定errno

Ø  在該檔案被關閉之前,重新整理快取中的資料。如果標準I / O庫已經為該流自動分配了一個快取,則釋放此快取。