c - fwrite 似乎工作,memcpy 失败

标签 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 的一部分要重复。

最佳答案

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

关于c - fwrite 似乎工作,memcpy 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415161/

相关文章:

c - 指向结构 argv 赋值的指针

java - Java 中将变量传递给参数的魔术

java - 列出目录的最有效方法是什么?

与线程同步混淆 [pthreads]

c - 将一个字节写入文件然后读取相同的字节是不一样的

c# - 查看字典字符串值是否包含某种模式并且同时不包含 C# 中的其他模式的最佳方法是什么?

python - 通过列表理解使用嵌套列表更新列表

c - 从控制台中删除新行字符

perl - 在 perl 中打开文件时,如果文件名为 "-",如何自动使用 STDIN/OUT?

c - 为什么我要添加 rax 和 rdx?