在C语言中捕获当前的输出结果可以使用重定向输出、使用管道、使用临时文件等方式。最常用的一种方式是通过重定向 stdout
,将输出结果捕获到字符串中。下面将详细介绍如何实现这一操作及其应用场景。
一、重定向输出到字符串
1.1 使用 freopen
重定向 stdout
freopen
是 C 标准库中的一个函数,可以用来重定向标准输入输出。通过使用 freopen
,我们可以将 stdout
重定向到一个文件,然后再从该文件中读取数据。
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char buffer[256];
// 重定向 stdout 到一个临时文件
fp = freopen("temp.txt", "w+", stdout);
if (fp == NULL) {
perror("freopen failed");
return EXIT_FAILURE;
}
// 输出一些内容
printf("This is a test output.n");
// 将文件指针移动到文件的开头
fseek(fp, 0, SEEK_SET);
// 读取文件内容到 buffer 中
fread(buffer, sizeof(char), 255, fp);
buffer[255] = '