メモリをFILE型として扱う2
http://d.hatena.ne.jp/longicorn/20080624#p1
を実際に試してみた。
char型のメモリに文字列を書き込むと言うだけ
#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; char *p; char buf[1024]; p = malloc(1024); if(p==NULL){ return 1; } fp = fmemopen(p, 1024, "w"); if (fp == NULL) { return 1; } sprintf(buf, "aaaaaa\n"); fwrite(buf, 1, 1024, fp); fclose(fp); printf("%s", p); return 0; }
実行結果
$ ./test aaaaaa
おおー。素晴らしい。
Linux限定だけど使えるぜ。
ちなみに、fileno(3)を試してみたらエラーになったので、ライブラリ側でFILE型のデータを作っているだけっぽい。