關於c語言的檔案操作之前我也寫過一篇部落格來介紹,但是當時寫的很不全面,只是簡單的使用了一下 ,今天再從新學習一下。
1、檔案的寫
首先還是先看乙個簡單的例子:
includeint這個例子就是實現開啟或新建乙個文字檔案,然後寫入使用者在控制台輸入的資料。main()
printf(
"input a string:\n");
while ((ch = getchar()) != '\n'
)
fclose(fp);
return0;
}
關於檔案操作首先是:
file *fp;這個file是檔案型別識別符號,是c編譯系統定義好的乙個結構體型別,結構體中含有檔名、檔案狀態等資訊。
其定義乙個指標變數 fp,該變數用於指向乙個檔案,存放的是檔案緩衝區的首位址。該指標又叫檔案指標,
檔案指標是乙個指向檔案開頭的指標。使用檔案指標,我們可以開啟或者關閉乙個檔案,同時,我們也可以使用檔案指標將資料的讀寫位置移動到檔案的任意位元組位置。
然後使用fopen函式開啟或新建乙個檔案:
fopen() 函式用來開啟乙個檔案,該函式接受兩個字串型別的引數:檔名(filename)、開啟模式(open mode)
fopen("filename","open mode")
當使用該函式開啟乙個檔案時,返回乙個指標,該指標指向檔案的開始位置,稱為檔案指標,
那麼為了接收它返回的檔案指標,我們需要事先宣告乙個檔案指標: file *fp
如果因為某些系統內部原因導致檔案無法開啟,則函式返回空指標 null
所以為了避免檔案開啟失敗導致的程式異常,開啟檔案一般按照如下格式:
if( (fp = fopen("在下面就是獲取使用者輸入,使用乙個while迴圈持續的獲取輸入,file_1.txt
","a
")) == null ) //
w+開啟可讀寫檔案,若檔案存在則清零,不存在則新建檔案,a 模式不清零
while ((ch = getchar()) != '\n'再此使用 \n 作為結束標誌,即只能在控制台輸入一行字串,)
若使用eof,則可以多行輸入,用ctrl+z表示輸入結束,該組合鍵代表標準輸入檔案的結束。
下一句 putc(ch,fp); 就是吧使用者輸入的字元寫入檔案,注意這裡是乙個字元乙個字元寫入的,因為輸入用的是getchar函式,
如果是字串輸入寫入的話,可以使用 fputc()函式直接寫入乙個字串。
最後也是非常重要的一步,對檔案讀寫完畢後需要關閉檔案,防止檔案開啟過多造成的檔案讀寫混亂。
使用fclose()函式關閉乙個檔案,
關閉檔案,正常關閉時返回0,否則返回1
關閉時,系統會清除緩衝區,並把資料輸出到磁碟檔案,釋放緩衝單元,使檔案指標與具體檔案脫鉤。
fclose(fp);
2、檔案的讀
到這裡關於檔案的寫操作就基本上是這些,下面是關於檔案的讀操作,其實和寫差不多。
還是先看一下完整的**,方便和上面的寫操作對比:
#include #include開始的開啟檔案方式和寫操作的差不多,就是多了乙個使用者自己輸入檔案的路徑和名稱。intmain()
/*while( (ch = getc(fp)) != eof ) //getc函式從檔案中讀取單個字元
putchar('\n'); //輸出乙個換行
*/while((fgets(str,80,fp)) !=null)
puts(str);
fclose(fp);
}
然後程式用了兩種方式來讀取檔案內容,乙個是使用fgetc函式讀取單個字元,然後輸出,一直迴圈,直到讀取到檔案的末尾。
另一種方式是使用特殊的fgets()函式來一次性讀取80個位元組的內容:
fgets 函式從 fp 檔案中讀取 80 個位元組的資料到str陣列中,然後用puts函式輸出。
當到達檔案末尾時, 函式返回 null,若要持續讀出字串,則迴圈檢測每次讀出80個位元組後是否到達檔案末尾。
關於檔案的操作還有很多深入的內容,後面學習了之後再繼續分享。。。。。。。
關於C語言檔案操作
關於c語言的檔案操作之前我也寫過一篇部落格來介紹,但是當時寫的很不全面,只是簡單的使用了一下 今天再從新學習一下。1 檔案的寫 首先還是先看乙個簡單的例子 includeint main printf input a string n while ch getchar n fclose fp ret...
C語言關於對檔案的刪除操作
有乙個c語言的題目要求對檔案中的資料進行刪除操作,據我所知c語言好象沒有刪除檔案中的資料的函式?於是只能考慮通過相關的檔案開啟方式 r,w,a,r w a 與fread fwrite 等函式實現刪除的操作 首先把檔案中的資料讀取到乙個指標結構體,由於檔案中的資料大小不能確定,所以不能使用結構體陣列,...
c語言關於檔案操作的常用函式
1.file fp fopen 要點一 要點二 這裡可以寫單獨的檔名,比如說 1.txt 那麼他就會在當前c檔案的資料夾目錄下查詢檔案是否存在,存在則返回這個檔案的指標,不存在的話則返回null,這裡也可以寫乙個檔案的絕對路徑,比如說 c aaa ccc a.txt 這樣的話他就會在整個電腦裡面找這...