在一段字符串处理时,使用sscanf函数出现问题:

#include <stdio.h>
#include <string.h>int main(void)
{int id = 0;char str[32];char mode[8];char ip[32];memset(mode, 0, sizeof(mode));memset(ip, 0, sizeof(ip));memset(str, 0, sizeof(str));strcpy(str, "1,\"IP\",\"192.168.1.1\"");/* 1,"IP","192.168.1.1" */printf("str = %s\n", str);/* \"%s\" */sscanf(str, "%d,\"%s\",\"%s\"", &id, mode, ip);/* id = 1, mode = IP","192.168.1.1", ip = 1.1" */printf("id = %d, mode = %s, ip = %s\n", id, mode, ip);return 0;
}

要解析的字符串为 1,"IP","192.168.1.1"
经过上述代码,结果比较奇怪,怀疑是\"%s\"这样的匹配形式有问题,因为虽然加了双引号转义,但是sscanf函数并没有安装预想结果来解析;
查了一下资料,找到了一种比较好的解决方法,我比较low,之前并没有用过通配符,这样学习了一下
修改后的代码为

#include <stdio.h>
#include <string.h>int main(void)
{int id = 0;char str[32];char mode[8];char ip[32];memset(mode, 0, sizeof(mode));memset(ip, 0, sizeof(ip));memset(str, 0, sizeof(str));strcpy(str, "1,\"IP\",\"192.168.1.1\"");/* 1,"IP","192.168.1.1" */printf("str = %s\n", str);/* \"%[^\"]\" */sscanf(str, "%d,\"%[^\"]\",\"%[^\"]\"", &id, mode, ip);/* id = 1, mode = IP, ip = 192.168.1.1 */printf("id = %d, mode = %s, ip = %s\n", id, mode, ip);return 0;
}

 这样显示的结果就正确了。

转载于:https://www.cnblogs.com/hancq/p/5014393.html

sscanf解析复杂字符串,双引号通配符的使用问题相关推荐

  1. Java解析JSON出现双引号变成转义字符quot;解决办法

    Java解析JSON出现双引号变成转义字符" 问题描述: 在接口中读取传过来的json数据,但是双引号都转义成了" 读取xml文件格式如下: {"message" ...

  2. Python字典转字符串双引号变成单引号

    Python字典转字符串双引号变成单引号 问题描述 解决方案 展示例子 问题描述 Python 上定义了字典,并且键值对使用了双引号,使用str()转换成字符串后发现双引号变成了单引号. 解决方案 使 ...

  3. 工银e生活开发脱坑日志(8)使用json_decode无法解析json,双引号才是json 的标准

    工行对接环境为JAVA(直接复制API加密参考文档的内容,导致的无法解析,基础知识薄弱),立即登录传参或支付json环境为PHP,JAVA与PHP传JSON传参: $loginParams = &qu ...

  4. 字符串双引号表示c语言,c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑)...

    c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下 问题:从c++文件中将std:string转 ...

  5. C语言定义字符串“双引号”和字符“单引号”

    最近写编译器的时候发现一个问题: 就是对于字符的匹配 例如对于双引号,如果是一个字符,那么'"'就可以了,但如果字符串"""就会报错. 所以,使用转义字符 例如 ...

  6. android 字符串 双引号,如何将TextView 字符串添加“” 双引号

    如何将TextView字符串添加双引号,例如"我是谁" 之前有些人提议写在布局文件里面 例如: android:text="点击"\我\" 但是很抱歉 ...

  7. python 字符串 双引号中包含双引号

    有点搞笑,因为这个点是看php代码学到的.很简单,为啥我自己想不到咧.. 先来看提供灵感的php代码: 比如sqli-labs的Less14,源代码中首先采用字符串拼接的方法给用户输入的参数两侧增加了 ...

  8. Java解析json出现双引号变成转义字符解决办法

    Java中:利用StringEscapeUtils.unescapeHtml4强转 String newJson = StringEscapeUtils.unescapeHtml4(jsonStr);

  9. 处理json字符串中双引号转义

    1.前台传过来的字符串,通过JSON.parseArray转为集合 import com.alibaba.fastjson.JSON; List<Subject> subjectList ...

最新文章

  1. 快速多尺度人脸检测--Multi-Scale Fully Convolutional Network for Fast Face Detection
  2. 如何在SharePoint2007中实现下拉列表(DropDownList)的级联菜单效果
  3. 【Linux】14_文件打包及压缩
  4. Linux:入门基础
  5. 算法训练 字符串编辑c语言
  6. CUDA编程中内存管理机制
  7. 使用Symantec Altiris 来监控 Dell 服务器 的 硬件
  8. Vue.js 组件编码规范
  9. CentOS6.5 安装并配置vsftpd
  10. 梅州市2021普通高考成绩查询,梅州高考成绩查询入口
  11. SFTP服务的使用!!
  12. IntelliJ IDEA 集成 SVN
  13. 2022焊工(初级)上岗证题目及在线模拟考试
  14. linux上的python开发工具_linuxpython开发工具,在linux下开发python使用什么工具好
  15. 【禁止套娃】用PPSSPP模拟PSP模拟Neogeo模拟SNK拳皇97
  16. ip: either “dev“ is duplicate, or “type“ is garbageip: either “dev“ is duplicate, or “txqueuelen“ i
  17. 百度地图图层开发java_Android百度地图应用之图层展示
  18. 开源免费的私有聊天软件 Akaxin
  19. Win10安装WSL-Ubuntu18.04
  20. 云脉H5高效纠错系统

热门文章

  1. Ubuntu20.04配置Java环境
  2. 【数据结构】二叉树的遍历及应用
  3. 【C++】函数的形参
  4. HTTP状态码及含义
  5. 理解Spring Boot
  6. 高等数学基础 - 高等数学主要内容
  7. matlab table中的文字转string_el-table 滚动条美化
  8. mysql中limit关键字_【JAVA】关于mysql的limit关键字使用。
  9. 太原理工大学自考计算机应用难,太原理工大学人工智能精彩试题+问题详解
  10. phpstudy的php fpm,PHP_php-fpm配置详解,php5.3自带php-fpm复制代码 代码 - phpStudy