/*將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檔案中。首先以乙個...