2011-06-20 109 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