【发布时间】:2013-10-10 06:45:34
【问题描述】:
我是学习 C 语言的初学者 :-)
我已经在 stackoverflow 中搜索了如何解决这个问题,但我无法理解。 :-(
在发布这个帖子之前,我总是将标准输出重定向到一个文件,然后使用fread将其读取到一个字符串
system ("print.exe > tempfile.tmp");
FILE *fp = fopen ( tempfile.tmp , "rb" );
char Str[Buf_Size];
fread (Str,sizeof(char),Buf_Size,fp);
如果这样做,会在文件 I/O 上浪费大量时间。
如何在不重定向到临时文件的情况下将标准输出重定向到 C 语言中的字符串?
有可能吗?谢谢。
环境:
Windows and GCC
【问题讨论】:
-
如果您在 POSIX 环境中,您可以通过
FILE *fp = popen("print.exe", "r");读取print.exe的输出。如果您使用的是 Microsoft 系统,则可以使用_popen()代替popen()。 -
@Jonathon Reinhart 在窗口中