使用char数组作为文件流

时间:2018-10-02 12:35:03

标签: c unix

如何使用char数组作为FILE流的数据存储?

char buffer[max_len];
FILE *fp = fopen(<I want to use data in buffer variable as file data>, "r");

目标是为以下行为在fp中准备好数据:

execl("/bin/cat", "cat",  fp, (char *)NULL);

此外,在使用fmemopen时(建议):

char buf[] = "hello";

FILE *fp = fmemopen(buf, strlen(buf), "w");
execl("/usr/bin/echo", "echo",  fp, (char *)NULL);

我得到错误的输出。

1 个答案:

答案 0 :(得分:2)

如果您使用的是C和GNU C库,或任何符合POSIX的实现,则可以使用fmemopen,它的工作原理完全符合您的预期。

如果要在便携式ISO C中执行此操作,很遗憾,fmemopen不可用。

但是,有一些示例库以可移植的方式进行操作,例如。 https://github.com/Snaipe/fmem

这利用了funopen函数,该函数允许将流操作与用户提供的函数相关联。

如果您以Windows为目标,情况会稍微复杂一些,此答案中有一些见解:https://stackoverflow.com/a/50087392/393701