1. ホーム
  2. c

[解決済み] C言語プログラミング:ファイルの内容を全てバッファに読み込む方法 [重複]について

2023-01-09 20:23:59

質問

あるファイルの全内容をバッファに書き込みたい。ファイルは実際には文字列しか含んでおらず、文字列と比較する必要があります。

linuxでも移植可能な最も効率的なオプションは何でしょうか。

ENV: Windows

どのように解決するのですか?

Linux は POSIX 準拠のシステムで、一般に C 言語用の適切で質の高いツールチェインがあるのに対し、Windows では C 標準ライブラリの多くの関数さえ提供されていないため、Linux と Windows 間の移植性は大きな頭痛の種です。

しかし、標準にこだわりたいのであれば、このようなものを書くことができます。

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

FILE *f = fopen("textfile.txt", "rb");
fseek(f, 0, SEEK_END);
long fsize = ftell(f);
fseek(f, 0, SEEK_SET);  /* same as rewind(f); */

char *string = malloc(fsize + 1);
fread(string, fsize, 1, f);
fclose(f);

string[fsize] = 0;

ここで string には、テキストファイルの内容が 0 終端の C 文字列として適切に格納されます。このコードは標準的な C 言語であり、POSIX 特有ではありません (ただし、Windows で動作/コンパイルできる保証はありません...)。