ファイルの内容をメモリに読み込む関数を以下に記述しました。私のローカル マシン (Ubuntu 32 ビット) では問題なく動作しますが、サーバー (CentOS 64 ビット) では間違った結果が生成されます。
間違っ たケース: 40 バイトのファイルの場合、コンテンツは以下のとおりです。64 ビット OS では、間違った結果が得られました。
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
コード:
char* file_get_contents(const char *filename) {
FILE *stream = NULL;
char *content = NULL;
size_t ret;
struct stat st;
if ((stream = fopen(filename,"r")) == NULL) {
fprintf(stderr, "Failed to open file %s\n", filename);
exit(1002);
}
if(stat(filename, &st) < 0) {
fprintf(stderr, "Failed to stat file %s\n", filename);
exit(1002);
}
content = malloc(st.st_size);
ret = fread(content, 1, st.st_size, stream);
if (ret != st.st_size) {
fprintf(stderr, "Failed to read file %s\n", filename);
exit(1002);
}
fclose(stream);
return content;
}