我在下面编写了一个函数来将文件的内容读取到内存中。它在我的本地机器(Ubuntu 32 位)上运行良好,但在服务器(CentOS 64 位)上产生错误结果。
错误案例: 使用 40 字节文件,内容如下,在 64 位操作系统上,它给了我错误的结果。
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;
}