我想用一个自定义的文件实现来模拟ANSI C中的一个文件

我想用一个自定义的文件实现来模拟ANSI C中的一个文件,c,file-io,buffer,stdout,C,File Io,Buffer,Stdout,为了测试stdio,我想编写一个助手来打开一个类似于文件的文件,但实际上只有100个字符的固定内存,我可以像常规缓冲区一样直接访问 本质上类似于下面的内容 TEST( printfMock, happyPath ) { const unsigned size = 100; char buffer[size]; const char helloStackoverflow = "Hello Stackoverflow"; FILE * mock, backup;

为了测试stdio,我想编写一个助手来打开一个类似于文件的文件,但实际上只有100个字符的固定内存,我可以像常规缓冲区一样直接访问

本质上类似于下面的内容

TEST( printfMock, happyPath )
{
    const unsigned size = 100;
    char buffer[size];
    const char helloStackoverflow = "Hello Stackoverflow";
    FILE * mock, backup;

    backup = stdout; 
    mock = helper(buffer, suze);
    printf("%s", helloStackoverflow);
    stdout = backup;
    cleanup(mock);

    EXPECT_STREQ(helloStackoverflow, buffer);

}
我需要一些关于如何实现
helper
功能的文档。
此函数旨在以独占方式在windows上运行。

FILE*mock表示指向文件的指针。FD被传递到操作系统以对设备或文件执行I/O。因此,您需要一个驱动程序,使内存缓冲区充当设备或文件。Windows和Linux都有这样的驱动程序。我真的不打算用任何其他方式来做这件事。

为什么需要测试stdio?为什么这样的测试需要直接写入内存缓冲区,而不是使用更简单的东西,例如管道……我正在包装系统进行实验。我正在通过一个公共接口路由调用,它的一端是stdout,我想测试一下公共接口是否没有破坏stdio的公共功能。这不是我希望听到的,但我读了你的链接,我认为你是正确的。谢谢你的提示。