如何从C中的stderr检索内容?

时间:2016-06-10 10:02:33

标签: c

我有stderr声明,其中有一个句子。

我想获取该内容并使用printf()将其推送到标准输出。

fprintf(stderr, "Hello world!");

现在,我希望获得 Hello World!并使用printf()将其打印到标准输出。

可行吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,stderr没有任何缓冲区。因此,我们需要为stderr设置缓冲区。

在stderr上执行任何操作之前,您必须更改stderr的缓冲区。

要为stderr设置缓冲区,可以使用setbuf()为stderr设置缓冲区。

示例: -

#include <stdio.h>

int main(void)
{
    char buf[BUFSIZ];
    setbuf(stderr, buf);
    fprintf(stderr, "Hello, world!\n");
    printf("%s", buf);
    return 0;
}

输出: -

Hello, world! 
Hello, world!

在这个例子中,变量buf包含你在stderr中编写的内容,它存储在buf字符数组中。使用该字符数组,您可以在stdout中打印它。