1. 目標:
本練習要從文檔(text file)中刪除或更改某行資料, 本練習僅適用資料格式固定的文檔.
上述操作及運轉過程如下影片:
2. 做法:
2.1. 確認工作環境:
2.1.1. 作業系統: Windows XP/Vista/Win7
2.1.2. C++編譯工具: Code::Blocks 13.12
2.1.3. 文件格式: 檔案(F)> New> File...> 選擇 "C/C++ source"> 選擇 "C++"
2.2. C++語法及註解:
2.2.1. 關於從文檔進行資料刪除與更改的方法, 通常是將資料處理完成後, 清除原文檔內所有資料, 最後再寫入所有新資料, 但本程式與上述之不同處乃僅針對單筆資料進行處理;
2.2.2. 關於文檔:
2.2.2.1. 文檔內資料格式: 第一行為編號/ 筆(serial number),
第二行為該編號/ 筆地所屬資料(data number per line), 以上參"附圖1.TextFileConstruction";
附圖1.TextFileConstruction
2.2.2.2. 文檔編碼(encoding)是使用ANSI(詳"附圖1.TextFileEcoding"紅圈處), 另可選用UTF-8後, 再分別執行第4項(Read a line from the text file)與第5項(Print the text file)功能, 以觀察其程式碼的編寫差異;
附圖2.TextFileEcoding
2.2.3. 關於程式碼:
2.2.3.1. 程式第22~25行: 預計建立一個只有15筆, 每筆4個整數述職的資料, 資料的範圍在0~200間隨機產生;
2.2.3.2. 程式第68行: i < G_TotalSerialNumber*2
如果寫成"i < G_TotalSerialNumber"則只會再顯示一半的資料訊息;
2.2.3.3. 程式第86與95行: 於執行後會在文檔的每筆資料內出現第6個資料(詳"附圖3.BufferData"紅圈處), 其用意在於執行第2項(Delete a line from the text file)與第3項(Change data of the line)功能時, 不會讓資料與下一筆資料發生重疊, 另程式第101行的空格可讓資料於進行讀取時, 不會誤讀到第6個資料;
附圖3.BufferData
2.2.3.4. 關於所謂"Deleting", 可以讓某筆資料清空, 甚至讓被清空的那一行不會留下空白, 但本程式採用讓資料歸零, 即表示該筆資料被刪除之意, 執行後如"附圖4.DeletingALine"紅圈所示.
附圖4.DeletingALine
2.3. 結果:
如上影片內容所示.
2.4. 資源下載:
注意:
1. 於運用前請先考量著作者的權利宣告與使用範圍;
2. 本程式為無毒軟體, 但有可能會為Google誤判, 故下載前請自行斟酌; 如不能下載則複製語法逕行編譯執行.
本C++語法的所有相關檔案下載位置:
1. B_DeletingOrChangeALineFromTextFile_20160520.cpp(共9KB)
2. B_DeletingOrChangeALineFromTextFile_20160520.exe(共975KB)
(檔案下載方式: 點擊連結網址後, 出現檔案所在網頁, 點擊螢幕左上方的 "檔案" , 然後選擇 "下載" 即可)
2.5. 改良延伸:
2.5.1. 可讓程式再為簡潔專業;
2.5.2. 增加報錯機制.
3. 感謝:
感謝網路上每位資訊提供者, 因為有您們無私的貢獻, 讓大家才有更美好的表現.
因為我是初學者, 如未能提供更詳實完整的資訊與解答時, 請見諒.
上述操作及運轉過程如下影片:
2.1.1. 作業系統: Windows XP/Vista/Win7
2.1.2. C++編譯工具: Code::Blocks 13.12
2.2.1. 關於從文檔進行資料刪除與更改的方法, 通常是將資料處理完成後, 清除原文檔內所有資料, 最後再寫入所有新資料, 但本程式與上述之不同處乃僅針對單筆資料進行處理;
2.2.2. 關於文檔:2.2.2.1. 文檔內資料格式: 第一行為編號/ 筆(serial number),
第二行為該編號/ 筆地所屬資料(data number per line), 以上參"附圖1.TextFileConstruction";
附圖1.TextFileConstruction |
2.2.2.2. 文檔編碼(encoding)是使用ANSI(詳"附圖1.TextFileEcoding"紅圈處), 另可選用UTF-8後, 再分別執行第4項(Read a line from the text file)與第5項(Print the text file)功能, 以觀察其程式碼的編寫差異;
附圖2.TextFileEcoding |
2.2.3. 關於程式碼:
2.2.3.1. 程式第22~25行: 預計建立一個只有15筆, 每筆4個整數述職的資料, 資料的範圍在0~200間隨機產生;
2.2.3.2. 程式第68行: i < G_TotalSerialNumber*2
如果寫成"i < G_TotalSerialNumber"則只會再顯示一半的資料訊息;
2.2.3.3. 程式第86與95行: 於執行後會在文檔的每筆資料內出現第6個資料(詳"附圖3.BufferData"紅圈處), 其用意在於執行第2項(Delete a line from the text file)與第3項(Change data of the line)功能時, 不會讓資料與下一筆資料發生重疊, 另程式第101行的空格可讓資料於進行讀取時, 不會誤讀到第6個資料;附圖3.BufferData |
2.2.3.4. 關於所謂"Deleting", 可以讓某筆資料清空, 甚至讓被清空的那一行不會留下空白, 但本程式採用讓資料歸零, 即表示該筆資料被刪除之意, 執行後如"附圖4.DeletingALine"紅圈所示.
附圖4.DeletingALine |
2.3. 結果:
如上影片內容所示.
2.4. 資源下載:
注意:
1. 於運用前請先考量著作者的權利宣告與使用範圍;
2. 本程式為無毒軟體, 但有可能會為Google誤判, 故下載前請自行斟酌; 如不能下載則複製語法逕行編譯執行.
本C++語法的所有相關檔案下載位置:
1. B_DeletingOrChangeALineFromTextFile_20160520.cpp(共9KB)
2. B_DeletingOrChangeALineFromTextFile_20160520.exe(共975KB)
(檔案下載方式: 點擊連結網址後, 出現檔案所在網頁, 點擊螢幕左上方的 "檔案" , 然後選擇 "下載" 即可)
2. B_DeletingOrChangeALineFromTextFile_20160520.exe(共975KB)
(檔案下載方式: 點擊連結網址後, 出現檔案所在網頁, 點擊螢幕左上方的 "檔案" , 然後選擇 "下載" 即可)
3. 感謝:
感謝網路上每位資訊提供者, 因為有您們無私的貢獻, 讓大家才有更美好的表現.
因為我是初學者, 如未能提供更詳實完整的資訊與解答時, 請見諒.
沒有留言:
張貼留言