我不确定发生了什么。与缓冲有关的东西。 ......代码......
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的一部分。
答案 0 :(得分:4)
您对fwrite vs memcpy使用不同的长度值。根据此处的代码(和注释掉的代码),memcpy使用len
或SOAP_BUFLEN
中的较小者。 fwrite使用res * 1
。所以我敢打赌len != res
。