摘要:1. sscanf函数 sscanf是C标准库函数,用于从字符串中读取格式化输入。 头文件: #include <stdio.h>函数原型如下: int sscanf(const char *s, const char *format, ...);函数返回值:返回成功读取的数量。 2. 使用实例 …

1. sscanf函数

sscanf是C标准库函数,用于从字符串中读取格式化输入

头文件:

#include <stdio.h>

函数原型如下:

int sscanf(const char *s, const char *format, ...);

函数返回值:返回成功读取的数量

2. 使用实例

AT指令参考文章:

  • 移远 EC200S 模组(4G Cat.1 通信模组)AT指令测试 TCP/UDP 通信过程

提取信号强度

AT命令返回结果为:

+CSQ: 17,0

OK

先使用strstr找到标志字符:

str = strstr(buffer, "+CSQ");

if (!str) {
return -1;
}

接着使用sscanf提取数值类型

ret = sscanf(str, "+CSQ:%d,%d", &rssi, &ber);
if (ret != 2) {
return -1;
}

提取基站信息

AT命令返回结果为:

+CREG: 2,0,"252A","6DD2104",7
OK

使用sscanf提取固定长度字符

sscanf(buffer, "+CREG:%d,%d,\"%4s\",\"%7s\"", &n, &stat, lac_buf, ci_buf);

提取IP地址

AT命令返回结果为:

+CIFSR:STAIP,"10.89.100.53"
+CIFSR:STAMAC,"dc:29:19:bb:d7:d3"
OK

使用sscanf提取数值类型:

sscanf(str + strlen("STAIP,"), "\"%d.%d.%d.%d\"", &seg1, &seg2, &seg3, &seg4);

另外一种写法是直接写到格式化字符串中:

sscanf(str, "STAIP,\"%d.%d.%d.%d\"", &seg1, &seg2, &seg3, &seg4);

提取MAC地址

AT命令返回结果为:

+CIFSR:STAIP,"10.89.100.53"
+CIFSR:STAMAC,"dc:29:19:bb:d7:d3"
OK

使用sscanf提取十六进制数值类型:

sscanf(str + strlen("STAMAC,"), "\"%2x:%2x:%2x:%2x:%2x:%2x\"", &seg1, &seg2, &seg3, &seg4,&seg5,&seg6);

正则表达式提取不定长字符

AT命令返回结果为:

+CWLAP:(4,"TP-LINK_PocketAP_DFBCD4",-57,"38:83:45:df:bc:d4",6)
+CWLAP:(3,"LSTM",-61,"8c:21:0a:bc:8e:70",13)
+CWLAP:(3,"LabWiFi",-62,"68:3b:78:8f:16:23",1)
+CWLAP:(0,"GuestWiFi",-64,"68:3b:78:8f:16:22",1) OK

先找到+CWLAP

strstr(buffer+offset, "+CWLAP:");

使用sscanf+正则表达式提取ssid、mac、rssi:

sscanf(str+strlen("+CWLAP:"), "(%d,\"%[^\"]\",%d,\"%[^\"]\",", &ecn, ssid, &rssi, mac);

读取之后,将str指针移动到该行结束,进行下一轮的查找:

while (*str++ != '\n') {
offset++;
}

最新文章

  1. [Redis]Redis 概述及基本使用规范.
  2. CURL函数的GET和POST方式的两种写法(实现ajax跨域调用)
  3. 【JOJO】真男人-坚不可摧
  4. linux下openoffice的安装和启动
  5. Android init.rc文件格式解析
  6. IT经理,你在这个位置吗
  7. 【Objective-C】3 -self关键字
  8. MYSQL 缓存详解 [myownstars] 经典博客
  9. CentOS(Linux) - SVN使用笔记(一) - 安装SVN过程及开启和关闭svn服务指令
  10. js调试
  11. HDU 1512 Monkey King(左偏树+并查集)
  12. 20分钟快速了解Redis
  13. 【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一、Adjacency List)
  14. 相对路径和绝对路径的问题&quot;/&quot;带不带斜杠
  15. 【PHP篇】运算及流程控制
  16. git cmd 命令在已有的仓库重新添加新的文件夹
  17. C#微信小程序服务端获取用户解密信息
  18. ps不显示命令本身的进程号
  19. 【原】Spring整合Redis(第二篇)—SDR环境搭建具体步骤
  20. margin显示怪异,外边距合并问题

热门文章

  1. ubuntu root密码问题
  2. 讲清楚之 javascript中的this
  3. ES6-11学习笔记--Symbol
  4. Node自动重启工具 nodemon
  5. jQuery实现数字时钟
  6. crm单元测试使用
  7. Codeforces Round #762 (Div. 3), CDE
  8. HCIE笔记-第十节-静态路由
  9. python基础练习题(题目 模仿静态变量的用法)
  10. Ubuntu 百度飞桨和 CUDA 的安装