我已经这块Ç代码:读取二进制文件的全部内容
[...]
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 *?
actualy简单'info.st_size'足够在这种情况下 –