有没有办法将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 ; }