0

あるファイルから別のファイルにコピーしようとしていますが、両方ともバイナリ モードで開かれています

ここ:

pdata は、入力を取得するファイルへのファイル ポインタです。

outfile は、データが書き込まれるファイルへのファイル ポインタです。

私の入力ファイルは約 400MB で、プログラムの実行が終了した後、出力ファイルには 80MB しか含まれていません。完全なファイルがコピーされないのはなぜですか?

パケット数を計算しようとしているときに、いくつかのバイトが残っていることはわかっています。

int num_RTP_packets=file_Size/(TS_PKT_SIZE * MAX_TS_PKTS); //Total no of Packets

for(int i=0;i<num_RTP_packets;i++)
{  
    long result;

    uint8* m_RTPPacketBuf =(uint8*) malloc(TS_PKT_SIZE * MAX_TS_PKTS); 

    int chunk=TS_PKT_SIZE* MAX_TS_PKTS;

    result=fread (m_RTPPacketBuf,chunk,1,pData); 

    fprintf(out_file,"%s",m_RTPPacketBuf);

    free(m_RTPPacketBuf);
}

前もって感謝します。

4

2 に答える 2

1

fwriteの代わりに使用しfprintfます。

fwrite(m_RTPPacketBuf, chunk, 1,outfile );

次の提案を検討してください。

  1. resultループ外のMoveおよびその他の宣言
  2. chunk定数/マクロに置き換えることができ、定数の場合は明らかにループの外側に配置できます。
  3. malloc割り当てられるメモリが変化しないため回避でき、代わりに固定サイズの配列を使用できます。
  4. と の戻り値を確認しfreadますfwrite
于 2013-06-17T09:27:39.093 に答える