gpt4 book ai didi

c - 将标准输出 C 文件流重定向到缓冲区

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:06 24 4
gpt4 key购买 nike

有什么方法可以将 stdout 文件流 (C stdout) 重定向到 Windows 中的缓冲区?

唯一对我有用的是:

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

但我总是必须读回文件以获取缓冲区内容。有什么方法可以直接将它重定向到内存缓冲区?

最佳答案

您可以将所有 printf 替换为 myprintf ,其中 myprintf 将是一个类似于 fprintf 的函数,但编写输出到缓冲区。 myprintf 本质上会使用 vsprintf 将输出放入字符缓冲区,然后再放入内存缓冲区。

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

#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 ;
}

关于c - 将标准输出 C 文件流重定向到缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com