2011-06-20 48 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時,我在輸出中看到重複的條目?我需要刷新一些東西嗎?

在printf語句的結尾處,我看到要重複的部分tmp。

回答

4

您對fwrite和memcpy使用不同的長度值。根據代碼(並註釋掉代碼),memcpy使用較小的lenSOAP_BUFLEN。 fwrite使用res * 1。所以我敢打賭len != res

+0

頭腦風暴! – cateof