当前位置:   article > 正文

c语言操作注意事项

c语言操作注意事项

库函数-sscanf (const char *, const char *, …);

sscanf (const char *, const char *, ...);主要是用于格式化获取字符串中的数据,
比如获取字符串+CIPGSMLOC: 0,22.6805522,113.9864134,2024/05/20,19:35:19中各个数据,

int locationcode; 
floatlbs_latitude;
float lbs_longitude;
int date_year;
int date_month;
int date_day;
int time_hour;
int time_minute;
int time_second;

sscanf((char *)ret, "+CIPGSMLOC: %d,%f,%f,%d/%d/%d,%d:%d:%d\r\n", &locationcode, &lbs_latitude, &lbs_longitude, 
                                            &date_year, &date_month, &date_day, &time_hour, &time_minute, &time_second);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

如果取数据的缓存变量是结构体中的成员,比如

typedef struct
{
    char imei[25];
    char iccid[25];
    char revision[30];
    int rssi_raw;
    int band;
    uint8_t psm_flag;
    uint8_t send_mode;
    float lbs_latitude;
    float lbs_longitude;
    uint32_t proccess_time;
}lteParams_ts;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
int locationcode; 
int date_year;
int date_month;
int date_day;
int time_hour;
int time_minute;
int time_second;

sscanf((char *)ret, "+CIPGSMLOC: %d,%f,%f,%d/%d/%d,%d:%d:%d\r\n", &locationcode, &lteParams.lbs_latitude, &lteParams.lbs_longitude, 
                                            &date_year, &date_month, &date_day, &time_hour, &time_minute, &time_second);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这时的结构体类型定义不能加#pragma pack(n)来设置1个字节对齐,即不能设置为#pragma pack(1)
这样操作有可能会造成内存溢出,报硬件中断。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/602801
推荐阅读
相关标签
  

闽ICP备14008679号