将stdout C文件streamredirect到缓冲区

有没有办法将stdout文件stream(C标准输出)redirect到Windows中的缓冲区?

唯一对我有用的是:

FILE *fp = freopen("output.txt", "w", stdout); printf("Hello\n"); fclose(fp); 

但我总是必须重新读取文件才能获取缓冲区内容。 任何方式直接redirect到内存缓冲区?

你可以用myprintf替换所有的printf ,其中myprintf是一个类似于fprintf的函数,但是将输出写入缓冲区。 myprintf本质上会使用vsprintf来获取输出到char缓冲区,然后到你的内存缓冲区。

这是一个非常简单和天真的概念实现,没有错误检查只是给你一个想法。

 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> void myprintf(char *mybuffer, const char *format, ...) { va_list args; va_start (args, format); char tempbuffer[100] ; vsprintf (tempbuffer, format, args); strcat(mybuffer, tempbuffer) ; va_end (args); } int main() { char buffer[100] ; buffer[0] = 0 ; myprintf (buffer, "Hello world!\n") ; myprintf (buffer, "Hello %s %d", "world", 123) ; printf (buffer) ; return 0 ; }