メモリを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型のデータを作っているだけっぽい。