用函式fopen s開啟資料檔案

2021-07-03 03:25:13 字數 1590 閱讀 9111

學習c語言,對檔案的輸入和輸出,開啟乙個資料檔案,一般教材用fopen函式,但是一些編譯器編譯無法通過,筆者用的vs2013,提示用fopen_s函式代替,fopen_s函式怎麼用呢?

例子選自譚浩強老師的《c語言程式設計(第四版)》(其實我覺得叫做c語言入門更貼切),[例10.1] 從鍵盤輸入一些字元,逐個把它們送到磁碟上去,直到使用者輸入乙個「#」為止。

#include

#include

int main()

ch = getchar(); //用來接收最後輸入的回車符

printf("請輸入乙個準備儲存到磁碟的字串(以#結束):");

ch = getchar(); //用來接收從鍵盤輸入的第乙個字元

while (ch != '#') //當輸入「#」時結束迴圈

fclose(fp); //關閉檔案

putchar(10); //向螢幕輸出乙個換行符

return

0;}

上面是乙個可以編譯通過,正確執行的源程式。下面作分析和總結。

fopen_s函式宣告如下:

errno_t fopen_s(

file** pfile,

const char *filename,

const char *mode

);fopen_s函式有3個引數,它的呼叫方式為:fopen_s(指標,檔名,使用檔案方式);其中指標是用來接收《指向開啟的檔案的指標》的指標。

fopen函式的返回值是乙個指向檔案的指標,而fopen_s函式的返回值則不同,正確返回0,不正確返回非0。

要定義乙個變數來接收fopen_s函式的返回值,即errno_t err; 其中errno_t是int的別名,typedef int errno_t;即err是個整型值,用來接收fopen_s函式的返回值。通過判斷err的值是否為0,可以知道開啟資料檔案成功與否,這是不同點1。

判斷開啟成功與否fopen_s用(err = fopen_s(&fp, filename, 「w」)) !=0,因為它的返回值是整型,而fopen判斷開啟成功與否,用fp = fopen(filename, 「w」)) ==null因為它的返回值是指標,開啟失敗返回空指標null,這是不同點2。

file *fp;定義fp是乙個指向file型別資料的指標變數,&p就是乙個指向file型別資料的指標變數的位址,也就是乙個《指向file型別資料的指標變數》的指標變數。有點繞,其實只要記住,先如file *fp;定義乙個指向file型別資料的指標變數,在fopen_s的引數,在定義的指標變數前加&即可。

c程式輸出結果:

請輸入所用的檔名:file1.dat

請輸入乙個準備儲存到磁碟的字串(以#結束):computer and c#

computer and c

請按任意鍵繼續. . .

路漫漫其修遠兮,吾將上下而求索!

fopen s開啟檔案

fopen s函式宣告 errno t fopen s file pfile,const char filename,const char mode errno t err 其中errno t是int的別名,typedef int errno t,即err是個整型值。通過判斷err的值是否為0,可以...

開啟檔案,寫入資料(檔案操作)

檔案的操作 開啟再關閉 include includeusing namespace std void main double x,y ifstream infile ofstream outfile infile.open c users good desktop 我的旅途 專案五十四 檔案操作 ...

開啟和寫入檔案 fopen和fopen s

fopen file fp1 建立乙個檔案操作指標 fp1 fopen 111.txt a 將指向這個檔案的檔案流給fp1 fprintf fp1,input format s n name 寫入 fclose fp1 fopen s file fp1 建立乙個檔案操作指標 errno t err ...