C語言stdio頭文件(stdio.h)中fopen函數的用法及代碼示例。
用法:
FILE * fopen ( const char * filename, const char * mode );
打開文件
流中允許的操作以及執行這些操作的方式由模式參數。
返回的流是完全緩衝默認情況下,如果已知不引用交互式設備(請參見setbuf)。
可以通過調用將返回的指針與文件解除關聯fclose或者freopen。在正常程序終止時,所有打開的文件都會自動關閉。
運行環境至少支持FOPEN_MAX文件同時打開。
參數
- filename
- C字符串,包含要打開的文件的名稱。
其值應遵循運行環境的文件名規範,並且可以包含路徑(如果係統支持)。 - mode
- 包含文件訪問模式的C字符串。有可能:
隨著模式文件上方的說明符以文本文件。為了打開一個文件二進製文件, 一種"b"字符必須包含在模式細繩。這個額外的"b"字符可以附加在字符串的末尾(因此采用以下複合模式:"rb","wb","ab","r+b","w+b","a+b")或插入字母和字符之間。"+"混合模式("rb+","wb+","ab+")的符號。"r" 讀:打開文件進行輸入操作。該文件必須存在。 "w" 寫:創建一個空文件進行輸出操作。如果已經存在同名文件,則將其內容丟棄,並將該文件視為新的空文件。 "a" 附加:打開文件以在文件末尾輸出。輸出操作始終將數據寫入文件的末尾,然後對其進行擴展。重新定位操作(fseek,fsetpos,rewind)將被忽略。如果文件不存在,則創建該文件。 "r+" 讀取/更新:打開文件進行更新(用於輸入和輸出)。該文件必須存在。 "w+" 寫入/更新:創建一個空文件並將其打開以進行更新(用於輸入和輸出)。如果已經存在同名文件,則將其內容丟棄,並將該文件視為新的空文件。 "a+" 追加/更新:打開一個文件進行更新(用於輸入和輸出),所有輸出操作均在文件末尾寫入數據。重新定位操作(fseek,fsetpos,rewind)會影響下一個輸入操作,但輸出操作會將位置移回文件末尾。如果文件不存在,則創建該文件。
新的C標準(不屬於C++的C2011)添加了新的標準子說明符("x"),可以附加到任何"w"說明符(形成"wx","wbx","w+x"或者"w+bx"/"wb+x")。如果文件存在,此子說明符將強製該函數失敗,而不是覆蓋它。
如果遵循此順序,則其他行為取決於庫的實現:某些實現可能會忽略其他字符,例如,"t"(有時用於明確聲明一個文本文件)被接受。
在某些庫實現中,以更新模式打開或創建文本文件可能會將流視為二進製文件。
文字檔是包含文本行序列的文件。根據應用程序運行的環境,某些特殊字符轉換可能會在文字模式使它們適應system-specific文本文件格式。盡管在某些環境下不會發生轉換,並且兩者都發生文字檔和二進製文件以相同的方式處理,使用適當的模式可提高可移植性。
對於打開以供更新的文件(其中包括"+"符號),同時允許輸入和輸出操作,則應刷新流(fflush)或重新定位(fseek,fsetpos,rewind)之後再進行寫操作之後的閱讀操作。流應重新定位(fseek,fsetpos,rewind),然後再執行讀取操作(無論該操作未到達文件末尾)。
返回值
如果文件成功打開,該函數將返回一個指向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語言 remove用法及代碼示例
- C語言 rename用法及代碼示例
- C語言 tmpfile用法及代碼示例
- C語言 tmpnam用法及代碼示例
- C語言 fclose用法及代碼示例
- C語言 fflush用法及代碼示例
- C語言 freopen用法及代碼示例
- C語言 setbuf用法及代碼示例
- C語言 setvbuf用法及代碼示例
- C語言 fprintf用法及代碼示例
- C語言 fscanf用法及代碼示例
- C語言 printf用法及代碼示例
- C語言 scanf用法及代碼示例
- C語言 snprintf用法及代碼示例
- C語言 sprintf用法及代碼示例
- C語言 sscanf用法及代碼示例
- C語言 vfprintf用法及代碼示例
- C語言 vfscanf用法及代碼示例
- C語言 vprintf用法及代碼示例
- C語言 vscanf用法及代碼示例
- C語言 vsnprintf用法及代碼示例
- C語言 vsprintf用法及代碼示例
- C語言 vsscanf用法及代碼示例
- C語言 fgetc用法及代碼示例
- C語言 fgets用法及代碼示例
- C語言 fputc用法及代碼示例
- C語言 fputs用法及代碼示例
- C語言 getc用法及代碼示例
- C語言 getchar用法及代碼示例
- C語言 gets用法及代碼示例
- C語言 putc用法及代碼示例
- C語言 putchar用法及代碼示例
- C語言 puts用法及代碼示例
- C語言 ungetc用法及代碼示例
- C語言 fread用法及代碼示例
- C語言 fwrite用法及代碼示例
- C語言 fgetpos用法及代碼示例
- C語言 fseek用法及代碼示例
- C語言 fsetpos用法及代碼示例
- C語言 ftell用法及代碼示例
- C語言 rewind用法及代碼示例
- C語言 clearerr用法及代碼示例
- C語言 feof用法及代碼示例
- C語言 ferror用法及代碼示例
- C語言 perror用法及代碼示例
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C fopen function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。