0

ビデオ ファイルを読み込んでバイナリとして保存し、再度ビデオ ファイルとして書き込みたいと考えています。180MBのビデオでテストしました。fread関数を使用しましたが、ビデオの配列サイズが小さいため、セグメンテーション違反が発生します。

それらは私の質問です:

  1. 160*1024 バイトの char 配列を使用します。char配列の最大サイズは? どうすればこの問題を解決できますか?

  2. このプログラムは次のように動作する必要があります。

    • ビデオの 128 バイトの読み取り -> 暗号化 -> 128 バイトの書き込み
    • 次の 128 バイトを読み取る -> 暗号化する -> 次に書き込む。

会社のセキュリティ規則により、コードをアップロードできません。どんなヒントでもいただければ幸いです。

4

1 に答える 1

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);
}
于 2013-08-28T12:47:41.607 に答える