fwrite 似乎有效,memcpy 失败

发布于 2024-11-16 02:30:50 字数 469 浏览 1 评论 0原文

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

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许一世地老天荒 2024-11-23 02:30:50

您对 fwrite 与 memcpy 使用不同的长度值。根据此处的代码(以及注释掉的代码),memcpy 使用 lenSOAP_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 or SOAP_BUFLEN. fwrite uses res * 1. So I'd bet len != res.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文