fopen c 開啟檔案

2021-06-06 11:38:03 字數 2796 閱讀 8173

函式原型:file * fopen(const char * path,const char * mode);

open

,fclose

,fopen_s[1] ,_wfopen

所需庫:>

返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回null,並把錯誤**存在errno 中。

一般而言,開啟檔案後會作一些檔案讀取或寫入的動作,若開啟檔案失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()後作錯誤判斷及處理。

引數說明:

引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。

mode有下列幾種形態字串:

r 以唯讀

方式開啟檔案

,該檔案必須存在。

r+ 以可讀寫方式開啟檔案,該檔案必須存在。

rb+ 讀寫開啟乙個二進位制檔案,只允許讀寫資料。

rt+ 讀寫開啟乙個文字檔案,允許讀和寫。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(eof符保留)

a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的eof符不保留)

wb 只寫開啟或新建乙個二進位制檔案;只允許寫資料。

wb+ 讀寫開啟或建立乙個二進位制檔案,允許讀和寫。

wt+ 讀寫開啟或著建立乙個文字檔案;允許讀寫。

at+ 讀寫開啟乙個文字檔案,允許讀或在文字末追加資料。

ab+ 讀寫開啟乙個二進位制檔案,允許讀或在檔案末追加資料。

上述的形態字串都可以再加乙個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函式庫開啟的檔案為二進位制檔案,而非純文字檔案。不過在posix系統,包含linux都會忽略該字元。由fopen()所建立的新檔案會具有s_irusr|s_iwusr|s_irgrp|s_iwgrp|s_iroth|s_iwoth(0666)許可權,此檔案許可權也會參考umask 值。

有些c編譯系統可能不完全提供所有這些功能,有的c版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統的規定。 程式示例程式示例1

#include

#include //為了使用exit()

int main()

int ch;

file* fp;

char fname[50]; //用於存放檔名

printf("輸入檔名:");

scanf("%s",fname);

fp=fopen(fname,"r"); //只供讀取

if(fp==null) //如果失敗了

printf("錯誤!");

exit(1); //中止程式

//getc()用於在開啟檔案中獲取乙個字元

while((ch=getc(fp))!=eof)

putchar(ch);

fclose(fp); //關閉檔案

return 0;

注意!初學者往往會犯乙個錯誤,即在輸入檔名時不加字尾名,請注意加上!

程式示例2[2]

#include

file *stream, *stream2;

int main( void )

int numclosed;

// open for read (will fail if file "crt_fopen.c" does not exist)

if( (stream = fopen( "crt_fopen.c", "r" )) == null ) // c4996

// note: fopen is deprecated; consider using fopen_s instead

printf( "the file 'crt_fopen.c' was not opened\n" );

else

printf( "the file 'crt_fopen.c' was opened\n" );

// open for write

if( (stream2 = fopen( "data2", "w+" )) == null ) // c4996

printf( "the file 'data2' was not opened\n" );

else

printf( "the file 'data2' was opened\n" );

// close stream if it is not null

if( stream)

if ( fclose( stream ) )

printf( "the file 'crt_fopen.c' was not closed\n" );

// all other files are closed:

numclosed = _fcloseall( );

printf( "number of files closed by _fcloseall: %u\n", numclosed );

python開啟檔案 Python檔案開啟模式

python 內建函式 python 內建函式 python open 函式用於開啟乙個檔案,建立乙個 file 物件,相關的方法才可以呼叫它進行讀寫。寫入檔案時,不會自動加入換行,需要手動在末尾加入,在每個元素後面都換行n,可以用 fo.writelines line n for line in ...

xlsx檔案開啟亂碼 xlsx檔案怎麼開啟亂碼

excel出現亂碼的原因也是多種多樣。如果你遇到excel開啟是亂碼,可以從下面找找相應的解決辦法。第一,csv檔案用excel開啟是亂碼 從網頁匯出的csv檔案,用excel開啟,中文會是亂碼。csv檔案亂碼問題主要是檔案編碼引起的。因此要解決excel開啟亂碼的問題,可以從改檔案開始 首先,用記...

Android開啟檔案

android獲取乙個用於開啟apk檔案的intent public static intent getallintent string param android獲取乙個用於開啟apk檔案的intent public static intent getapkfileintent string pa...