memcpy with char * 不工作

问题描述 投票:0回答:4
char recBuffer[8024];
char* temp = (char*)malloc(65536);
ZeroMemory(recBuffer, 8024);
ZeroMemory(temp, 65536);

bytesRead = recv(_socket, recBuffer, sizeof(recBuffer), 0);

memcpy(temp , &recBuffer, bytesRead );

memcpy 在这里不起作用。它将一个随机字符复制到 temp 中。如果我玩弄指针,我可以让它复制接收到的数据的第一个字符。我该如何正确地做到这一点?

我希望将接收到的 recBuffer 数据复制到临时缓冲区中。


编辑:来自评论的工作代码:

#include <string.h>
#include <stdio.h>

int main()
{
    char recBuffer[8024];
    char* temp = (char*)malloc(65536);

    strcpy(recBuffer, "Hello\n");

    int bytesRead = 7;
    memcpy(temp , &recBuffer, bytesRead );

    printf("%s\n", temp);

    return 0;
}

编辑 2 为什么会失败?:

#include <stdio.h> 

void Append(char* b, char data, int len)
{
memcpy(b , &data, len ); 
}

int main() { 
int bytesRead = 7; 
char recBuffer[8024]; 
char* temp = (char*)malloc(65536); 
strcpy(recBuffer, "Hello\n"); 
Append(temp, recBuffer, bytesRead);    
printf("%s\n", temp); 
    return 0; 
}
c memcpy ansi-c
4个回答
2
投票

变化:

memcpy(temp , &recBuffer, bytesRead );

致:

memcpy(temp , recBuffer, bytesRead );

1
投票

尝试

memcpy(temp, &recBuffer[0], bytesRead);

0
投票

我觉得你看到了问题,因为你没有

#include <stdlib.h>

我是否使用都得到相同的结果:

memcpy(temp , &recBuffer, bytesRead );

memcpy(temp , recBuffer, bytesRead );

0
投票

在示例 2 中,char 数据需要更改为 char const * data 并作为数据而不是 &data 传递给 memcopy。坏问题我知道..没有意识到..

© www.soinside.com 2019 - 2024. All rights reserved.