有没有办法将 stdout 文件流(C stdout)重定向到Windows中的缓冲区?
唯一对我有用的是:
FILE *fp = freopen("output.txt", "w", stdout);
printf("Hello\n");
fclose(fp);
但我总是要回读文件以获取缓冲区内容。有没有办法直接将其重定向到内存缓冲区?
答案 0 :(得分:1)
您可以将所有printf
替换为myprintf
,其中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 ;
}