第十四周 專案一 小玩檔案

2021-07-03 06:52:09 字數 1241 閱讀 3891

【專案1 - 小玩檔案】

(1)下面程式的功能是統計文字檔案abc.txt中的字元個數,

#include #include #include //

//fstream提供了三個類,用來實現c++對檔案的操作。(檔案的建立,讀寫)。

// ifstream -- 從已有的檔案讀

//// ofstream -- 向檔案寫內容

//// fstream - 開啟檔案供讀寫

////支援的檔案型別

//using namespace std;

int main()

{ fstream file;

file.open("abc.txt", ios::in); // (2)讀入檔案(在此之前已經建立abc文字檔案)

if(!file) {

cout<<"abc.txt can』t open."<

(2)下面程式的功能是將文字檔案abc.txt中的所有行加上行號後寫到newabc.txt檔案中,

/*

*檔名稱:d.cpp

*作 者:張旺華

*完成日期:2023年6月14日

*版 本 號:v1.0

*/#include #include #include using namespace std;

int main()

{ fstream outfile,infile;

infile.open("abc.txt",ios::in); // (1)

if(!infile) {

cout<<"can』t open the file."<

ps:當abc.txt檔案中存在長於80個字元的行時,程式會陷入死迴圈。通過跟蹤發現,從當遇到這個「超長」的行時,infile.getline(buf, 80)先讀出79個字元,以\0結束,之後再讀,buf[0]總是\0,同時!infile.eof()為假,所以進入死迴圈。懷疑這其中該是這種「截斷」式讀取超長行帶來的***。參看《

getline的獲取ifstream的資料

》,其中給出了解釋與對策。

顯然,當初的這個程式並未考慮超長行,而是預設每一行都不會達80個字元而設計的。注意:如果某一行就這樣被「截斷」了,並不意味著這就是一行,直到找到換行符,才能說明這是一行的結束,行數i++才能執行,這個程式的改進又可以進行了。

第十四周專案一 小玩檔案

問題及 檔名稱 小玩檔案 cpp 作 者 白雲飛 完成日期 2015年6月4日 版 本 號 v1.0 程式輸入 字元 include include include using namespace std int main fstream file file.open abc.txt ios in ...

第十四周專案一 小玩檔案

1 下面程式的功能是統計文字檔案abc.txt中的字元個數,請填空將程式補充完整。2 下面程式的功能是將文字檔案abc.txt中的所有行加上行號後寫到newabc.txt檔案中,請填空將程式補充完整。include include include using namespace std int ma...

第十四周 專案一 小玩檔案(2)

問題及 檔名稱 x.cpp 作者 李楠 完成日期 2015年6月3日 版本號 v1.0 輸入描述 略 程式輸出 略 include include include using namespace std int main fstream outfile,infile infile.open abc....