函式原型: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...