關於C語言的輸入輸出重定向
1、一種是在程式中設定:使用freopen將輸入輸出重定向。
C語言的標準輸入輸出為stdin和stdout,這兩個變數的型別為FILE*型別,也就是說,標準輸入輸出操作,其本質還是檔案操作。當需要重定向時,可以呼叫
#include <stdio.h>
freopen("d:\\data_in.txt","r",stdin); 將輸入定向為檔案d盤下的檔案data_in.txt檔案
(linux下的路徑表示有點差別:freopen("/data_in.txt","r",stdin);表示根目錄下的data_in.txt檔案。)
freopen("d:\\data_out.txt","w"
,stdout); 將輸出定向到d盤下的data_out.txt目錄。
當呼叫該函式時,需要引用標頭檔案stdio.h,在使用freopen()之後的標準輸出或輸入會重新定向,而之前的不會變。
2、另一種是執行時重定向:
在命令列輸入: myprog.exe > X:\\data_out.txt (在myprog.exe所在的資料夾下)
可以將輸出重定向到X盤下的data_out.txt檔案中,這時程式中所有的輸出都將重定向到該檔案,除非在程式中使用了freopen()函式,如果是這樣的話,程式中freopen()函式之前的輸出重定向到data_out.txt檔案,而freopen()之後的將定向到freopen()指定的檔案中。
這裡“ > ”表示覆蓋式輸出,而“ >> ” 表示追加式輸出
重定向輸入的方式也類似:在命令列輸入 myprog.exe < data_in.txt
當程式中依次出現scanf()、getchar() 輸入函式時,就會自動的依次從檔案data_in.txt中讀取對應長度的文字(以位元組算)。需要注意的是檔案的結束標記為EOF
例如要讀取檔案中的所有文字可以寫如下程式碼:
while( getchar() != EOF)
{ putchar(); }