【发布时间】:2012-05-25 04:33:00
【问题描述】:
这对我不起作用:
char buff[11];
char* msg_ptr;
msg_ptr = buff;
uint8_t id;
uint32_t msg_length;
char msg[] = "hallo";
id = 77;
msg_length = 5;
memcpy(buff, &id, sizeof(uint8_t));
memcpy(buff+1, &msg_length, sizeof(uint32_t));
strcpy(buff+5, msg);
printf("id :%d\n",*(uint8_t*)msg_ptr);
msg_ptr++;
printf("msg_length: %d\n", *msg_ptr);
msg_ptr++;
printf("msg: %s\n", msg_ptr);
Id 和 msg_lentgh 显示在 konsole 上,但之后出现分段错误。 我是C新手,请尽可能详细。 问候
【问题讨论】:
-
这不是您的实际代码(首先,您有
msg_ptr和msg_prt)。请发布您的实际代码。 -
你还有错别字。
-
嗨,错别字不是问题,它们很容易清除。我想知道我的思维错误。我是 stackoverflow 的新手,在左上角我注意到有人评论说我的缓冲区太小。但不应该是:id(1 byte) + msg_length(4 byte) + msg(5 byte) = 10 byte。
-
@user1324258:错字是的问题。如果您没有显示您的实际代码,那么我们无法确定我们在回答时是否解决了实际问题。