2012-03-05 88 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”

相关问题