1. 程式人生 > >關於C語言的輸入輸出重定向

關於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();             }