我正在尝试stdout将我自己的程序读入这样的2个数组中
#include<stdio.h>
int main ()
{
char arr[100]={0};
char arr2[100]={0};
printf("Hello world\n"); // This writes to stdout
fgets( arr, 80, stdout );
fseek ( stdout, 0, SEEK_SET );
fgets ( arr2, 80, stdout );
printf ("First array is %s\n", arr );
printf ("Second array is %s\n", arr2 );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出不是我所期望的.这就是数组都是空的而不是Hello World像我预期的那样包含.
我经历了这篇文章,建议处理管道来完成我想要的但不告诉我为什么上面的代码不起作用?
编辑:虽然知道替代方案以使其完成上述工作会很好,但我对阅读stdout相同程序所涉及的问题更加好奇
并非每个文件都是可搜索,可读或可写的.Stdout通常是一种无法回读的东西.
最有可能的是,stdout将是一个管道.在这种情况下,您的程序保存可写端,而其他人持有可读端.管道实现只传输数据而不保留数据; 一旦在另一端阅读,就无法将其取回.
如果您想要一个可以回读的文件,请创建一个常规临时文件或您自己的管道,并使用fprintf/ fscanf而不是printf/ scanf.或者,freopen在stdout上执行以将其重新分配给另一个文件/管道,然后printf将对该新文件进行操作.