• 已解决 35199 个问题
  • 已帮助 5838 位优秀工程师

如何把接收不定长的字符串到指定结构体内

还是小孩 2020-01-05 浏览量:230
发送命令,然后串口会接收到不定长的字符串,想存到指定的结构体内,组成设备信息
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • C语言中,结构体是一种稳定的结构(有固定的内存空间占用),对于不定长字符串其实有两种处理方式

    1. 虽然不定长,但最长不太长,可以用字符串数组直接存储在结构体中,比如明确某个字符串最多20个字符,则可以用20个字符串的字符数组来存储,少于20个字符时,用'\0'表示结尾

    2. 在结构体中存储指向字符串实体的指针(需要注意这种情况并不能保证数据指向是有效的),使用时也要注意需要验证后才使用。


    总之,在结构体中包含不定长字符串的处理都是比较麻烦的,要小心使用。

    • 发布于 2020-01-06
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 可以用字符串指针放在结构体里,因为地址长度都是固定的,然后通过判断字符串结尾符也就是\0来知道是否到字符串结尾,
    • 发布于2020-01-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 到底有多么长的不定长?有项目能不定长到5000多个字节,楼上的处理是一个办法,但是使用指针,非常麻烦的,需要注意内存的回收否则,你接受一次,就开一个内存,很快就卡死来了。还是结构体用固定字符长度数组来保存。不过保存时候,多保存一位截至符。比如\r\n
    • 发布于2020-01-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 把两个数据,强制转换成char *的,使用指针进行赋值。

    这样,是不论是什么数据类型,都是可以转换过去的

    • 发布于2020-01-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 两种方法

    1、事先开辟一个比较大的静态存储区,大到足够放下最长的字符串,然后每次串口收到数据,就往这个存储区里面放

    2、使用动态分配的方法,一次分配16个字节,不够就再分配

    • 发布于2020-01-10
    • 举报
    • 评论 0
    • 0
    • 0

如何把接收不定长的字符串到指定结构体内