在结构中使用指针来分配字符串

时间:2017-12-01 16:45:21

标签: c pointers struct

我正在尝试将字符串分配给结构中的指针。即使我能够成功地将字符串初始化为指针,当我尝试使用字符串(访问指针)时,我得到一些随机值。我该如何解决这个问题。以下是我的代码:

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++;
    }
}

有没有其他方法可以访问指针?

1 个答案:

答案 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)