読者です 読者をやめる 読者になる 読者になる

はわわーっ

はわわわわっ

Cでファイル全体を読み込む

やってみたけど、fseek() とか ftell() とか rewind() とか初めて使ったからよくわからん。
エラー処理もちゃんとできてんのかよくわかってない。

#include <stdio.h>
#include <stdlib.h>

char *readfile(const char *filename)
{
	FILE *fp;
	long size, n;
	char *buf;

	fp = fopen(filename, "r");
	if (fp == NULL)
		return NULL;

	fseek(fp, 0, SEEK_END);
	size = ftell(fp);
	if (size == -1) {
		fclose(fp);
		return NULL;
	}

	buf = malloc(size);
	if (buf == NULL) {
		fclose(fp);
		return NULL;
	}

	rewind(fp);
	n = fread(buf, 1, size, fp);
	if (n != size) {
		free(buf);
		fclose(fp);
		return NULL;
	}

	return buf;
}


int main(void)
{
	const char *fname = "sample.json";
	char *text;

	text = readfile(fname);
	if (text == NULL) {
		fprintf(stderr, "readfile failed\n");
		return 1;
	}

	printf("%s\n", text);

	return 0;
}