库函数-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);
如果取数据的缓存变量是结构体中的成员,比如
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;
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, <eParams.lbs_latitude, <eParams.lbs_longitude, &date_year, &date_month, &date_day, &time_hour, &time_minute, &time_second);
这时的结构体类型定义不能加#pragma pack(n)
来设置1个字节对齐,即不能设置为#pragma pack(1)
这样操作有可能会造成内存溢出,报硬件中断。