【发布时间】:2009-10-06 15:45:37
【问题描述】:
我被一段看似无害的代码困住了。我正在尝试将整个 flv 视频文件读入 uint8_t 数组,但毫无理由只读取前 10 个字节。
contents = malloc(size + 1);
if (read(fd, contents, size) < 0)
{
free(contents);
log_message(WARNING, __func__, EMSG_READFILE);
return (NULL);
}
我也尝试过使用 fopen 和“rb”,但似乎 Glibc 忽略了额外的“b”或其他东西。有什么线索吗?
提前致谢。
编辑:也许它读取的是 EOF 字符?
PS。 'size' 是一个包含使用 stat() 的实际文件大小的变量。
【问题讨论】:
-
尺寸是多少?并且你检查过malloc的返回值不为null吗?
-
我相信 fopen 的 'b' 标志只在 Windows 中需要。它在 Linux 中被忽略,因此您可以将其包含在内以实现可移植性。
-
你检查过返回的错误吗?见 strerror(int errnum)