2012-03-05 40 views
0

我正在用C寫一個程序。這個程序打印出當前目錄下的文件。 我希望某些文本文件中的輸出不在控制檯上。 我的計劃是: - 提前寫入文件而不是標準輸出

int main() 
{ 

     system("ls"); 
     return 0; 
} 

謝謝!

+0

那麼一個辦法就是一段時間後,標準輸出在終端中執行''./xyz> logfile.txt' – noMAD 2012-03-05 05:22:18

回答

2

既然你已經使用system(),而這已經是平臺相關的,只是使用shell的重定向功能 - 即

system("ls > /home/you/thefile"); 
+0

@RolandIllig,你說得對! – 2012-03-18 23:09:16

+0

我同意這比fopen()更容易,但它並不完全是如何寫入C中的文件的規範示例。 – dwerner 2012-03-18 23:36:34

1

這是你如何寫一個文件,只需更換你的輸出與你想要的文件。 正如其他人提到你可以將它管到一個文件。

FILE *ofp; 
char outputFilename[] = "out.txt"; 

ofp = fopen(outputFilename, "w"); 

if (ofp == NULL) { 
    fprintf(stderr, "Can't open output file %s!\n", 
      outputFilename); 
    exit(1); 
} 

fprintf(ofp, "ls"); 
fclose(ofp); 
0

有一種其他功能標準輸出重定向到一個文件

###stdio.h 
###FILE *freopen(const char *filename, const char *mode, FILE *stream); 

    int main() 
    { 
     char outputFilename[] = "out.txt"; 
     freopen(filename, "w", stdout) 

     system("ls"); 
     return 0; 
    } 

所有重定向輸出將被寫入到文件「out.txt」

相關問題