gpt4 book ai didi

c - C语言结构体中有指针成员,以及如何将结构体数据输出到串口

转载 作者:行者123 更新时间:2023-11-30 20:31:11 24 4
gpt4 key购买 nike

    char *ssid,num;

ssid = malloc(sizeof(char)*6);
memcpy(ssid,"123456",6);

struct stu{
uint8_t head;
char *name;
uint8_t end;

} stu1 = {0x55, ssid, 0xf0 };



//printf("%s",stu1.name);
//how to output the structure data to the serial port.
send_msg((char *)&stu1,sizeof(stu1));

free(ssid);

最佳答案

由于您的结构体包含一个指针(即name),因此将整个结构体发送到串行端口是没有意义的。指针是程序本地的东西,打印它没有意义。

所以需要将成员一一打印出来。喜欢:

send_msg(&stu1.head, sizeof stu1.head);
send_msg(stu1.name, 6);
send_msg(&stu1.end, sizeof stu1.end);

顺便说一句......

请注意,name不是以零结尾。这意味着 name 不是字符串。我猜你希望它是一个字符串。所以你应该这样做:

int len = strlen("123456");
ssid = malloc(len + 1); // notice + 1 for the zero termination
memcpy(ssid,"123456", len + 1); // or strcpy(ssid, "123456");

然后你就可以做

send_msg(stu1.name, strlen(stu1.name));

关于c - C语言结构体中有指针成员,以及如何将结构体数据输出到串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52351870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com