我来翻译了:
输出结果为:
我有这段 C 代码:
[...]
struct stat info;
char *filename = "just_a_binary_file";
stat(filename, &info);
printf("FILE SIZE: %d\n", info.st_size);
char *content = (char *)malloc(info.st_size * sizeof(char *));
FILE *fp = fopen(filename, "rb");
fread(content, info.st_size, 1, fp);
fclose(fp);
printf("STRING LENGTH: %d\n", strlen(content));
[...]
输出结果为:
FILE SIZE: 20481
STRING LENGTH: 6
问题在于文件中包含一些零字节,当我将文件内容放入变量char*中时,字符串会在第一个出现的 '\0' (chr(0) 精确地) 处被截断。
问题是如何将完整的二进制内容放入变量 char* 中?
info.st_size
就足够了。 - Vinicius Kamakura