自学内容网 自学内容网

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);

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

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, &lteParams.lbs_latitude, &lteParams.lbs_longitude, 
                                            &date_year, &date_month, &date_day, &time_hour, &time_minute, &time_second);

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


原文地址:https://blog.csdn.net/dropLin/article/details/139073287

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!