我有一个大学项目需要将 int 转换为 char 缓冲区。我需要使用 memcpy 但是当我复制值时它不起作用,因为 msg_buf 仍然是空的。我有一些限制: - 我需要使用 memcpy,因为我的老师会测试我的代码,比如 memcmp(msg_str, &opcode, 2) == 0)。
这是我的代码:
int message_to_buffer(struct message_t *msg, char **msg_buf){
int opcode = htons(msg->opcode);
int c_type = htons(msg->c_type);
int result;
int buffer = sizeof(opcode) + sizeof(c_type);
switch(msg->c_type){
case CT_RESULT:
result = htonl(msg->content.result);
buffer += sizeof(result);
*msg_buf = (char*)malloc(sizeof(char) * 12);
if(msg_buf == NULL)
return -1;
memcpy(*msg_buf,&opcode,sizeof(opcode));
break;
};
return buffer;
}
这里有什么问题?