我正在C上編寫一個Linux程序,我不能使用fprintf
打印到文件。我可以使用printf
在控制檯中進行打印。我如何獲取控制檯輸出並將其寫入文件。我試過printf("echo whatever >> file.txt");
但我懷疑它不能運行。從控制檯打印到文件
感謝
我正在C上編寫一個Linux程序,我不能使用fprintf
打印到文件。我可以使用printf
在控制檯中進行打印。我如何獲取控制檯輸出並將其寫入文件。我試過printf("echo whatever >> file.txt");
但我懷疑它不能運行。從控制檯打印到文件
感謝
運行程序時,追加> file.txt
它應該工作。
./program > file.txt
IIRC,重新路由STDOUT的文件。
這看起來像我正在尋找的解決方案。它創建文件,但似乎沒有寫入它。我正在運行的程序有一個參數,所以我應該在arg之前還是之後使用它?我曾嘗試過,但無濟於事...... – Ferguzz 2011-04-16 17:59:09
你想要做什麼打印? – TyrantWave 2011-04-16 18:01:19
編譯並運行您的程序一樣,
./program > lala.txt
這將 「推」 所有的printf()
年代到lala.txt
可以freopen
的stdout
流。
#include <stdio.h>
int main(void) {
if (freopen("5688371.txt", "a", stdout) == NULL) {
/* error */
}
printf("Hello, world!\n");
return 0;
}
您試圖讓程序輸出一些文本,並將shell作爲命令評估輸出。
這是不尋常的,一個通常分離生成所述文本到程序的責任,然後讓殼重定向輸出到一個文件:
的foo.c包含:
...
printf("whatever");
...
然後運行您的程序和標準輸出重定向到你喜歡的地方:
$a.out >> file.txt
可以freopen
或dup2
如下:
#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;
}
'系統( 「回聲無論>> file.txt的」);'應該工作,但如果你不能用'fprintf',爲什麼你可以使用'system' ^^。 – Simon 2011-04-16 17:47:59