檔案的讀寫

2021-09-16 18:33:00 字數 2779 閱讀 3123

/*將0-127之間的ascii字元寫到檔案中,

然後從檔案中讀出並顯示到螢幕上*/

#include#includemain()

for(i=0;i<128;i++)

fclose(fp);

if((fp=fopen("奇異博士.doc","rb"))==null)/*以二進位制讀的方式開啟檔案*/

while((ch=fgetc(fp))!=eof)/*從檔案中讀取字元直到檔案末尾*/

fclose(fp);

}

執行結果:

將上述結果比較奇異博士.doc 裡的檔案的內容:

為什麼在螢幕上顯示的字元與奇異博士.doc 文件裡看到的內容不一致?

21-23行通過檢查fgetc()的返回值是否為eof來判斷是否讀到了檔案末尾,若讀到了檔案的末尾,則返回eof,即-1.

除此之外,還可以使用函式feof()來判斷是否讀到檔案末尾。因此,將21-23行

做如下修改:

函式feof()用於是否到達檔案末尾。當檔案位置指標指向檔案結束符時(eof,全稱end-of-file indicator),返回非0值,否則返回0。

修改上述程式,將ascii值在0-127之間的字元寫到磁碟檔案上,然後從檔案中讀取這些字元時,判斷讀出的字元是否為可列印字元,若是則直接將字元顯示到螢幕上,否則將該字元的十進位制ascii值相識到螢幕上。

if((fp=fopen("奇異博士.doc","rb"))==null)/*以二進位制讀的方式開啟檔案*/

while((ch=fgetc(fp))!=eof)/*從檔案中讀取字元直到檔案末尾*/

fclose(fp);

}讀寫檔案中的字串

從檔案中讀取字串可以用函式fgets()

#include#include#include#define n 80 

main()

gets(str); /*從鍵盤讀入乙個字串*/

fputs(str,fp);/*將字串str寫入fp所指的檔案中*/

fclose(fp);

if((fp=fopen("美國隊長.doc","r"))==null)/*以讀的方式開啟檔案*/

fgets(str,n,fp);/*從fp所指的檔案中讀出字串,最多讀n-1個字元*/

puts(str); /*將字串顯示在螢幕上*/

接下來演示對 美國隊長.doc 的內容進行追加:

每執行一次程式,美國隊長.doc 的內容都會追加。為什麼?

因為第十行是以新增的方式開啟 美國隊長.doc 的。因此,每次執行程式時從鍵盤輸入的字串都會被新增到 美國隊長.doc 的末尾。

看看第二次新增的現象:

怎麼樣?是不是在第一次內容的基礎上又新增了一次內容?說明上述分析的邏輯是正確的。

#include#include#include#define n 80 

main()

gets(str); /*從鍵盤讀入乙個字串*/

fputs(str,fp);/*將字串str寫入fp所指的檔案中*/

fclose(fp);

if((fp=fopen("美國隊長.doc","r"))==null)/*以讀的方式開啟檔案*/

fgets(str,n,fp);/*從fp所指的檔案中讀出字串,最多讀n-1個字元*/

puts(str); /*將字串顯示在螢幕上*/

fclose(fp);

}

檔案的讀寫

eg 文字中每一行的資料結構,它們是以tab鍵為間隔的 afghanistan baghlan 36.12 68.7 afghanistan balkh 36.758 66.896 include stdafx.h include fstream include using namespace st...

檔案的讀寫

為了讀而開啟檔案,要建立乙個ifstream物件,他的用發與cin相同,為了寫而開啟檔案,要建立乙個ofstream物件,用法與cout相同。一旦開啟乙個檔案,就可以像處理其他iostream物件那樣對它進行讀寫。在iosream庫中,乙個十分有用的函式是getline 用它可以讀入到string物...

檔案的讀寫

對於檔案的讀寫有各種形式,如位元組流讀寫,字元流讀寫,在字元流之上的緩衝流的讀寫,對於這幾種流的讀寫各有優點,各有不足吧 首先介紹一下位元組輸入輸出流 fileinputstream fiieoutputstream 對檔案的操作 將檔案aa.txt中的內容讀取出來放到bb.txt檔案中。首先以乙個...