fwrite似乎工作,memcpy失败

时间:2011-06-20 17:37:36

标签: c string io

我不确定发生了什么。与缓冲有关的东西。 ......代码......

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的一部分。

1 个答案:

答案 0 :(得分:4)

您对fwrite vs memcpy使用不同的长度值。根据此处的代码(和注释掉的代码),memcpy使用lenSOAP_BUFLEN中的较小者。 fwrite使用res * 1。所以我敢打赌len != res