memcpy with char * not working

evrscar2  于 2023-03-28  发布在  其他
关注(0)|答案(4)|浏览(114)
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; 
}
iaqfqrcu

iaqfqrcu1#

变更:

memcpy(temp , &recBuffer, bytesRead );

收件人:

memcpy(temp , recBuffer, bytesRead );
e7arh2l6

e7arh2l62#

试试看

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

vs91vp4v3#

我有种感觉你看到了问题所在因为你没有

#include <stdlib.h>

我得到相同的结果,无论我用途:

memcpy(temp , &recBuffer, bytesRead );

memcpy(temp , recBuffer, bytesRead );
laik7k3q

laik7k3q4#

在示例2中,需要将char data更改为char const * data,并将其作为data not &data传递给memcopy。

相关问题