當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 fopen用法及代碼示例


C語言stdio頭文件(stdio.h)中fopen函數的用法及代碼示例。

用法:

FILE * fopen ( const char * filename, const char * mode );
打開文件
打開在參數中指定名稱的文件文檔名稱並將其與可以在以後的操作中識別的流相關聯FILE指針返回。

流中允許的操作以及執行這些操作的方式由模式參數。

返回的流是完全緩衝默認情況下,如果已知不引用交互式設備(請參見setbuf)。

可以通過調用將返回的指針與文件解除關聯fclose或者freopen。在正常程序終止時,所有打開的文件都會自動關閉。

運行環境至少支持FOPEN_MAX文件同時打開。

參數

filename
C字符串,包含要打開的文件的名稱。
其值應遵循運行環境的文件名規範,並且可以包含路徑(如果係統支持)。
mode
包含文件訪問模式的C字符串。有可能:
"r"讀:打開文件進行輸入操作。該文件必須存在。
"w"寫:創建一個空文件進行輸出操作。如果已經存在同名文件,則將其內容丟棄,並將該文件視為新的空文件。
"a"附加:打開文件以在文件末尾輸出。輸出操作始終將數據寫入文件的末尾,然後對其進行擴展。重新定位操作(fseek,fsetpos,rewind)將被忽略。如果文件不存在,則創建該文件。
"r+"讀取/更新:打開文件進行更新(用於輸入和輸出)。該文件必須存在。
"w+"寫入/更新:創建一個空文件並將其打開以進行更新(用於輸入和輸出)。如果已經存在同名文件,則將其內容丟棄,並將該文件視為新的空文件。
"a+"追加/更新:打開一個文件進行更新(用於輸入和輸出),所有輸出操作均在文件末尾寫入數據。重新定位操作(fseek,fsetpos,rewind)會影響下一個輸入操作,但輸出操作會將位置移回文件末尾。如果文件不存在,則創建該文件。
隨著模式文件上方的說明符以文本文件。為了打開一個文件二進製文件, 一種"b"字符必須包含在模式細繩。這個額外的"b"字符可以附加在字符串的末尾(因此采用以下複合模式:"rb","wb","ab","r+b","w+b","a+b")或插入字母和字符之間。"+"混合模式("rb+","wb+","ab+")的符號。

新的C標準(不屬於C++的C2011)添加了新的標準子說明符("x"),可以附加到任何"w"說明符(形成"wx""wbx""w+x"或者"w+bx"/"wb+x")。如果文件存在,此子說明符將強製該函數失敗,而不是覆蓋它。

如果遵循此順序,則其他行為取決於庫的實現:某些實現可能會忽略其他字符,例如,"t"(有時用於明確聲明一個文本文件)被接受。

在某些庫實現中,以更新模式打開或創建文本文件可能會將流視為二進製文件。

文字檔是包含文本行序列的文件。根據應用程序運行的環境,某些特殊字符轉換可能會在文字模式使它們適應system-specific文本文件格式。盡管在某些環境下不會發生轉換,並且兩者都發生文字檔二進製文件以相同的方式處理,使用適當的模式可提高可移植性。

對於打開以供更新的文件(其中包括"+"符號),同時允許輸入和輸出操作,則應刷新流​​(fflush)或重新定位(fseekfsetposrewind)之後再進行寫操作之後的閱讀操作。流應重新定位(fseekfsetposrewind),然後再執行讀取操作(無論該操作未到達文件末尾)。

返回值

如果文件成功打開,該函數將返回一個指向FILE可用於在將來的操作中標識流的對象。
否則,將返回空指針。
在大多數庫實現中,errno變量也會在失敗時設置為system-specific錯誤代碼。

示例

/* fopen example */
#include <stdio.h>
int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","w");
  if (pFile!=NULL)
  {
    fputs ("fopen example",pFile);
    fclose (pFile);
  }
  return 0;
}


相關用法


注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C fopen function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。