0

我想读取视频文件并保存为二进制文件并再次写入视频文件。我用 180MB 的视频进行了测试。我使用了 fread 函数,它发生分段错误,因为视频的数组大小很小。

这些是我的问题:

  1. 我使用 160*1024 字节的 char 数组。char 数组的最大大小是多少?我该如何解决这个问题?

  2. 该程序需要作为:

    • 读取 128 字节的视频 -> 加密 -> 写入 128 字节
    • 读取下一个 128 字节 -> 加密 -> 写入下一个。

由于公司的安全规则,我无法上传我的代码。任何提示将不胜感激。

4

1 回答 1

1

首先使用fseek()with SEEK_END,然后使用ftell()确定文件大小,然后分配所需的内存malloc()并将数据写入该内存。

如果我理解正确,您不需要分配这么多内存,而只需 128 字节。

char buf[128];
while(/* condition */)
{
  ret = fread(buf, sizeof buf, 1, fp_in);
  encrypt(buf);
  ret = fwrite(buf, sizeof buf, 1, fp_out);
}
于 2013-08-28T12:47:41.607 回答