2014-02-11 33 views
-2

我已經創建了一個文件,但是如何將輸出重定向到文件而不是終端?我嘗試使用>運算符,但不斷收到錯誤。任何幫助表示讚賞。如何將輸出重定向到C中的文件?

#include <stdio.h> 

    int main(int argc, char *argv[]) 
    { 
     FILE *fp;  //File handler 

     char cmd[] = "sort -n"; //sort -n sorts stdin in numerical order 
     char pmode[] = "w"; //write mode - we are to write to a pipe 

     fp = popen(cmd,pmode); //Open the pipe (run command cmd as a child process) 

     fprintf(fp, "3\n"); //WRITE data to pipe 
     fprintf(fp, "1\n"); 
     fprintf(fp, "5\n"); 
     fprintf(fp, "4\n"); 
     fprintf(fp, "2\n"); 

     pclose(fp);   

      return 0; 
       } 
+4

>是一個shell操作符,而不是C操作符。回到基礎並找出什麼是C以及什麼是shell腳本。 – Almo

+0

同意@almo,避開sn。。 –

+0

一個簡單的谷歌搜索將得到更快的答案,並且比在此處發佈帖子更省力。我只是不明白一些人。 – redFIVE

回答

0

>運算符不會影響程序的執行。它被shell用來將你的程序輸出到stdout的內容重定向到一個文件中。

shell是運行你的程序的東西,它不是它的一部分。

1

如果您的C應用程序已經打印到屏幕上(無論是通過設計還是因爲應用程序的作者最初並未設想寫入文件),重定向很有用。

如果您真的對重定向感興趣,那麼不要擔心代碼中的FILE指針,只需打印到標準輸出。然後,當您運行應用程序時,您可以使用|來儘可能多地重定向和>運營商。另一方面,如果您真的對您的應用程序能夠寫入文件感興趣,那麼您的應用程序需要做額外的工作來獲取文件路徑/名稱,打開文件,寫入該文件文件句柄 - 不是標準輸出 - 最後關閉文件。此外,您需要更加小心謹慎地觀察錯誤並妥善處理它們。

如果你走這條路線,你可以簡單地運行你的應用程序,而不必擔心重定向,因爲你的應用程序處理文件I/O。

相關問題