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 的一部分被重复。
I am not sure what is going on. Something related with buffering. The ... code ...
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");
}
when I use fwrite I see the output with no problems. When I use memcpy I see duplicate entries in the output? Do I need to fflush something?
At the end of the printf statement I see a portion of the tmp to be repeated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您对 fwrite 与 memcpy 使用不同的长度值。根据此处的代码(以及注释掉的代码),memcpy 使用
len
或SOAP_BUFLEN
中的较小者。 fwrite 使用res * 1
。所以我打赌len!= res
。You are using different length values for fwrite vs memcpy. Based on the code (and commented out code) here, memcpy uses the lesser of
len
orSOAP_BUFLEN
. fwrite usesres * 1
. So I'd betlen != res
.