2011-06-20 16 views
1

何が起こっているのか分かりません。何かがバッファリングに関連しています。コード...fwriteが動作しているようですが、memcpyが失敗します。

if (data->inbound){ 
//fwrite(buf, res, 1, stdout); //data->inbound); 
char tmp[SOAP_BUFLEN+1]; 
memset(tmp,0,SOAP_BUFLEN+1); 
if(len>0) { 
    memcpy(tmp, buf, minim(SOAP_BUFLEN,len)); 
    tmp[minim(SOAP_BUFLEN,len)] = '\0'; 
    printf("%s\n",tmp); 
    //printf("-----------------\n"); 
} 

私はfwriteを使用していますが、出力は問題なく表示されます。 memcpyを使用すると、出力に重複したエントリが表示されますか?私は何かをfflushする必要がありますか?

printfステートメントの最後に、繰り返されるtmpの一部があります。

答えて

4

あなたはfwrite対memcpyに異なる長さの値を使用しています。ここでコード(およびコメントアウトされたコード)に基づいて、memcpyはlenまたはSOAP_BUFLENの小さい方を使用します。 fwriteはres * 1を使用します。だから私はlen != resと賭けるだろう。

+0

心が吹かれました! – cateof

関連する問題