我正在尝试将字符串分配给结构中的指针。即使我能够成功地将字符串初始化为指针,当我尝试使用字符串(访问指针)时,我得到一些随机值。我该如何解决这个问题。以下是我的代码:
typedef struct
{
uint8_t LOG_ID;
uint8_t timestamp;
uint8_t loglength;
uint8_t checksum;
uint8_t *payload;
} Log;
Log LB_t;
void main(){
LB_t.LOG_ID=1;
LB_t.timestamp=3;
LB_t.loglength=17;
LB_t.checksum=89;
LB_t.payload="LED initialised";
log_item(&LB_t,17);
}
void log_item(uint8_t *logptr,uint8_t length){
while(length!=0){
CB_buffer_add_item(tx,*logptr);
length=length-1;
logptr++;
}
}
有没有其他方法可以访问指针?
答案 0 :(得分:1)
好的,我明白了,你希望'payload'在struct中。它不是,只是指针。你需要这样做
typedef struct
{
uint8_t LOG_ID;
uint8_t timestamp;
uint8_t loglength;
uint8_t checksum;
uint8_t payload[100];
} Log;
然后
strncpy(LB_t.payload, "LED initialised", 100);
你可能想让100成为const或#define somehwere。并将年龄17改为sizeof(Log)