我想读取视频文件并保存为二进制文件并再次写为视频文件。 我测试了180MB视频。我使用了fread函数,它发生了分段错误,因为视频的数组大小很小。
这些是我的问题:
我使用160 * 1024字节的char数组。 char数组的最大大小是多少?我怎么能解决这个问题?
这个程序需要像以下一样工作:
由于公司的安全规则,我无法上传我的代码。任何提示都将不胜感激。
答案 0 :(得分:1)
首先使用fseek()
和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);
}