c - 带 char * 的 memcpy 不起作用

标签 c memcpy ansi-c

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; 
}

最佳答案

更改:

memcpy(temp , &recBuffer, bytesRead );

致:

memcpy(temp , recBuffer, bytesRead );

关于c - 带 char * 的 memcpy 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303129/

相关文章:

c - C 段错误中的大型阵列,erathos 的 Sievs

c# - 结合 C 和 C#。结构的

c - 如何在 C 语言中为我的 8051、AT89C51CC03 板微 Controller 创建按钮软件复位?

C++ memcpy 到 malloc 内存

c - C99 之前的 C 在 for 循环中没有初始声明的原因是什么?

c++ - 如何理解有关简单程序创建的一切?

c - 为什么 memcpy() 更快?

objective-c - memcpy 会正确复制字符串吗?

c - 如何读取C中的行

复杂的通用堆栈