我有一个C函数,可以从中读取字符流FILE*
.
FILE*
在这种情况下,我如何从字符串创建一个?
编辑:
我认为我的原帖可能会产生误导.我想FILE*
从一个文字字符串值创建一个,以便生成的结果FILE*
就像某个文件某处包含字符串而不实际创建文件一样.
以下是我想做的事情:
void parse(FILE* f, Element* result);
int main(int argc, char** argv){
FILE* f = mysteryFunc("hello world!");
Element result;
parse(f,&result);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,C的标准库不提供此功能; 但有几种方法可以解决它:
创建一个临时文件,将字符串写入其中,然后打开它进行读取.如果您有POSIX,gettempnam
将为您选择一个唯一的名称
另一个选项(仅适用于POSIX)是fork
一个新进程,其作用将是write
字符串到管道,而fdopen
另一端是FILE*
为您的函数获取一个.
正如@KeithThompson所指出的那样,fmemopen
确实是你想要的,所以如果你有POSIX,请使用它.在任何其他平台上,(除非您能找到平台等效的平台),您将需要一个临时文件.