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;
}
答案 0 :(得分:2)
变化:
memcpy(temp , &recBuffer, bytesRead );
要:
memcpy(temp , recBuffer, bytesRead );
答案 1 :(得分:1)
尝试
memcpy(temp, &recBuffer[0], bytesRead);
答案 2 :(得分:0)
我觉得你看到了这个问题,因为你没有
#include <stdlib.h>
我是否使用相同的结果:
memcpy(temp , &recBuffer, bytesRead );
或
memcpy(temp , recBuffer, bytesRead );
答案 3 :(得分:0)
在示例2中,char数据需要更改为char const *数据,并作为数据而不是数据传递给memcopy。我知道的坏问题..没有意识到..