【发布时间】:2011-08-10 15:19:42
【问题描述】:
我有这段 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* 中?
【问题讨论】: