赞
踩
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)
这样操作有可能会造成内存溢出,报硬件中断。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。