回到「13. 額外語法 (Extra syntax)」
上一頁
您是否有想過要用C++來讀取和寫入檔案呢?
真的可以嗎?需不需要解析磁碟機NTFS、FAT32之類的格式啊?
當然不需要!
放心,這件事連小莫都不知道怎麼做
所謂「站在巨人的肩膀上」,這種事情不用再由我們自己處理了!
在先人的努力之下,「C++」這個偉大的程式語言,已經讓電腦可以只依據簡單的幾行程式碼,就可以執行許多複雜卻需要經常執行的工作
事實上,C++讀寫檔案的方法比你想的任何方式都簡單!
更具體地來講
我們在撰寫C++程式碼的時候,只需要告訴電腦「讀取哪個檔案」和 (或)「寫入哪個檔案」就好了!
要怎麼告訴電腦「恩,我要從這個檔案名稱為『in.txt』的檔案讀取」呢?
(請先到檔案總管設定顯示附檔名以取得完整的檔案名稱 (點我查看教學))
寫下一行程式碼就夠了:
freopen("in.txt","r",stdin);
這樣一來,之後的「輸入」都會從「in.txt」這個檔案讀取
甚麼意思呢?
我們來看一個例子:
#include<cstdio> int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++) { int v; scanf("%d",&v); printf("%d\n",v*v); } return 0; }
輸入「10 1 2 3 4 5 6 7 8 9 10」的情況 |
每次執行都要手動輸入「10 1 2 3 4 5 6 7 8 9 10」好煩喔 (不管是一個字一個字慢慢打還是直接「Ctrl+V」貼上)
當然,本頁的解決方案是「用檔案代替手動輸入」
只要在執行檔所在的資料夾建立一個內容為「輸入」的檔案,然後在main函式開頭加入「freopen("檔名","r",stdin);」就好了!
這樣講你可能不懂,用截圖來解釋最清楚!
步驟如下:
![]() |
這是原本的程式碼 |
![]() |
按下鍵盤上的「Ctrl+B」(開啟檔案所在的資料夾) |
![]() |
在資料夾中點一下滑鼠右鍵 |
![]() |
「新增 (New)」→「文字文件 (Text Document)」 |
![]() |
出現一個文字文件 |
![]() |
命名為「in.txt」
|
![]() |
按「Enter」完成命名 |
![]() |
按「Enter」開啟檔案以編輯內容 |
![]() |
將輸入「10 1 2 3 4 5 6 7 8 9 10」打進去並存檔 |
![]() |
回到「Dev-C++」 |
![]() |
在main函式的開頭插入「freopen("in.txt","r",stdin);」這一行程式碼 |
![]() |
按下鍵盤上的「F11」,即可直接看到用「in.txt」的內容來輸入的執行結果 |
耶,我們成功讓程式自動使用「in.txt」的內容來當作輸入了!
這就是C++「讀取檔案」的方式
那麼,要怎麼用C++「寫入檔案」呢?
一樣,一行程式碼搞定:
freopen("out.txt","w",stdout);
這樣一來,之後的「輸出」都會寫入到「out.txt」這個檔案
甚麼意思呢?
我們來看一個例子:
#include<cstdio> int main() { for(int a=1;a<=99;a++) { for(int b=1;b<=99;b++) { printf("%5d",a*b); } printf("\n"); } return 0; }
![]() |
傳說中的「九九九九乘法表」,輸出好龐大 電腦沒有很好,所以跑了整整6秒多XD |
可以發現,輸出時在大巨大了,以致於原本應該顯示在同一行的文字,硬生生地被切成好幾段並分行顯示
看起來好痛苦 >_<
當然,本頁的解決方案是「『輸出到檔案再用別的軟體開啟檢視』代替『原始的黑色視窗顯示方式』」
只要在main函式開頭加入「freopen("檔名","w",stdout);」就好了!
這樣講你可能不懂,用截圖來解釋最清楚!
步驟如下:
![]() |
這是原本的程式碼 |
![]() |
在main函式的開頭插入「freopen("out.txt","w",stdout);」 |
![]() |
按下鍵盤上的「F11」執行程式,很快就執行完了! |
![]() |
回到「Dev-C++」 |
![]() |
按下鍵盤上的「Ctrl+B」開啟檔案所在的資料夾
在開起的資料夾中找到剛剛程式輸出的檔案「out.txt」
|
![]() |
按「Enter」或滑鼠連點兩下開啟「out.txt」
Wow~這是我們漂亮的輸出!
|
![]() |
檔案的右下角,還是一樣整齊~ |
耶,我們成功讓程式自動將輸出儲存成「out.txt」了!
這就是C++「寫入檔案」的方式
可以看到,不管是「輸出」還是「輸入」,我們都使用到了一個名字叫做「freopen」的函式
它可以很幫便快速地使用,但是也有一個很明顯的缺點:
一旦使用後,就無法再回去使用黑色視窗輸入或輸出了!
下一頁將簡單地介紹功能更完整的檔案讀寫方法!
下一頁
感謝:
(版權所有 All copyright reserved)
為甚麼輸出的路徑設成別的就寫不進去了??
回覆刪除freopen要加在main函式開頭哦~
刪除如果還有疑問,歡迎貼上您的程式碼~ ^_^