2011-04-16 144 views
0

我正在C上編寫一個Linux程序,我不能使用fprintf打印到文件。我可以使用printf在控制檯中進行打印。我如何獲取控制檯輸出並將其寫入文件。我試過printf("echo whatever >> file.txt");但我懷疑它不能運行。從控制檯打印到文件

感謝

+0

'系統( 「回聲無論>> file.txt的」);'應該工作,但如果你不能用'fprintf',爲什麼你可以使用'system' ^^。 – Simon 2011-04-16 17:47:59

回答

2

運行程序時,追加> file.txt它應該工作。

./program > file.txt

IIRC,重新路由STDOUT的文件。

+0

這看起來像我正在尋找的解決方案。它創建文件,但似乎沒有寫入它。我正在運行的程序有一個參數,所以我應該在arg之前還是之後使用它?我曾嘗試過,但無濟於事...... – Ferguzz 2011-04-16 17:59:09

+0

你想要做什麼打印? – TyrantWave 2011-04-16 18:01:19

0

編譯並運行您的程序一樣,

./program > lala.txt 

這將 「推」 所有的printf()年代到lala.txt

0

可以freopenstdout流。

#include <stdio.h> 

int main(void) { 
    if (freopen("5688371.txt", "a", stdout) == NULL) { 
    /* error */ 
    } 
    printf("Hello, world!\n"); 
    return 0; 
} 
1

您試圖讓程序輸出一些文本,並將shell作爲命令評估輸出。

這是不尋常的,一個通常分離生成所述文本到程序的責任,然後讓殼重定向輸出到一個文件:

的foo.c包含:

... 
printf("whatever"); 
... 

然後運行您的程序和標準輸出重定向到你喜歡的地方:

$a.out >> file.txt 
0

可以freopendup2如下:

#include <unistd.h> 
#include <fcntl.h> 
int main(int argc, char *argv[]) 
{ 
    int f = open("test.txt", O_CREAT|O_RDWR, 0666); 
    dup2(f, 1); 
    printf("Hello world\n"); 
    printf("test\n"); 
    close(f); 
    return 0; 
}