如何使用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);
我得到错误的输出。
答案 0 :(得分:2)
如果您使用的是C和GNU C库,或任何符合POSIX的实现,则可以使用fmemopen,它的工作原理完全符合您的预期。
如果要在便携式ISO C中执行此操作,很遗憾,fmemopen不可用。
但是,有一些示例库以可移植的方式进行操作,例如。 https://github.com/Snaipe/fmem。
这利用了funopen函数,该函数允许将流操作与用户提供的函数相关联。
如果您以Windows为目标,情况会稍微复杂一些,此答案中有一些见解:https://stackoverflow.com/a/50087392/393701。