再记一下sscanf的一个小问题
这个XML命令是自定义的,格式类似:大人[1],大奔[黄],大小[250],中括号表示为传递的参数,其中既有数字(%d)也有字符串(%s),一开始还以为是中文搞的鬼,后来查发现是只要是字符中在命令的中间,使用sscanf的%s就会将该字符串及以后的所有的字符都解析到,因此,字符串后面的数据就不正确了。
一开始想着使用字符串查找strchr逐个字符来查找、确定每一个参数,但那个命令一共有20多个参数,这点我是不能接受的。后来再调试一下,发现只要将有字符串的参数放到最后就可以了。至于最后有个右中括号,则可以将它直接写'\0'来解决。
不过这种方法,只能适用于只有一个字符串的情况。如果复杂的情况,最终的方法是重新制定命令的格式。
示例代码如下:
void sscanf_test()
{
char* buff = "wo:[12],ni:[25],ta:[中文我顶]";
char wo[32] = {0};
char ni[32] = {0};
char ta[32] = {0};
char buffer[128] = {0};
int wo1, ni1, ta1;
printf("test1:\n");
sscanf(buff, "wo:[%d],ni:[%d],ta:[%s]", &wo1, &ni1, ta);
printf("output1:wo: %d \nni: %d \nta: %s\n", wo1, ni1, ta);
char* buff1 = "wo:[12],ni:[结束了还来],ta:[250]";
printf("test2:\n");
sscanf(buff1, "wo:[%d],ni:[%s],ta:[%d]", &wo1, ni, &ta1);
printf("output2:wo: %d\nni: %s \nta: %d\n", wo1, ni, ta1);
}
输出:
test1:
output1:wo: 12
ni: 25
ta: 中文我顶]
test2:
output2:wo: 12
ni: 结束了还来],ta:[250]
ta: 7 // 此处已是错误的了
李迟 2015年1月18日 周日 下午
再记一下sscanf的一个小问题相关推荐
- 身为程序员别再无脑学习撩妹小技巧,这篇聊天基础先记牢!
别再无脑学习撩妹小技巧,这篇聊天基础先记牢! 干货 作为一个曾经的话题废,十分理解各位的心情,这篇文章希望可以帮助所有在聊天和社交上有问题的朋友. 这是一个真实写给聊天小白的科普文. 全文分成四个阶段 ...
- 将一个正方形分成4个大小一样的小正方形,再将其中一个小正方形分成4个小正方形,如此类推,分割n次是几个正方形?
问题: 将一个正方形分成4个大小一样的小正方形,再将其中一个小正方形分成4个小正方形,如此类推,分割n次是几个正方形? 解答: 一次分割都是将一个分成4个,增加了3(1*3)个: ...
- C语言:使用指针,封装一个函数, // 使输入的奇数从小到大排列,奇数排列完毕之后,再把偶数从大到小进行排列, // 最终输出整个
// 使用指针,封装一个函数, // 使输入的奇数从小到大排列,奇数排列完毕之后,再把偶数从大到小进行排列, // 最终输出整个 #include <stdio.h> void Jopai ...
- 一个小需求,能够做到月活跃用户5000万,就是真牛逼!
来自:Java面试那些事儿 这篇文章是之前写的文章,我觉得还是对不少同学有所帮助,因为生活让大家都太浮躁,很难沉下心来认真做一件事,本文既是给大家推荐一款好用的Chrome插件,同时也给大家讲述这款插 ...
- 程序员们请别做下一个小贝
据网友提供的<蜗居>第24集3:30秒截图,有理由相信小贝是搞 C++ 的 那本书是<大规模C++程序设计> -- 历史上一定有那么一些人,没有名,没有钱,只是和爱人一起过完了 ...
- 别再搜集面经啦!小夕教你斩下NLP算法岗offer!
推完上一篇文章,订阅号和知乎后台有好多小伙伴跟小夕要面经(还有个要买简历的是什么鬼),然鹅小夕真的没有整理面经呀,真的木有时间(。 ́︿ ̀。).不过话说回来,面经有多大用呢?最起码对于NLP岗位的面 ...
- Autobook中文版(七)—9.一个小的GNU Autotools项目
9.一个小的GNU Autotools项目 本章介绍一个真实的小例子,演示一些GNU Autotools具有的特性,指明一些GNU Autotools使用上的陷阱.所有的源码能被下载从本书的主页上.这 ...
- 生成句法分析树以及从一个小例子来看词义消歧及语义角色标注
一.生成句法分析树 把一句话按照句法逻辑组织成一棵树,由人来做这件事是可行的,但是由机器来实现是不可思议的,然而算法世界就是这么神奇,把一个十分复杂的过程抽象成仅仅几步操作,甚至不足10行代码,就能让 ...
- 同感,在另外一个小华为待过,也差不多是这样的
最近很多朋友咨询的一些硬件问题,发现朋友们没有仔细的看datasheet,也没有好好的做电路分析.我讲一讲华为是怎么做硬件开发的,给正在做硬件开发的朋友一些启示.说的不对的地方,大家批评指正. 曾经2 ...
最新文章
- hbase shell编码显示中文
- 机器学习是深度学习之母
- java 硬件交互_Java关键字之native
- java多线程 门闩_Java线程与并发编程实践----同步器(倒计时门闩,同步屏障)...
- 支持向量机原理(二)
- python实现气象数据分析统计服_Python数据分析实战:降雨量统计分析报告分析
- 我只注视你全cg存档_在暴戾的他怀里撒个娇 作者:春风榴火全娱乐圈都在等我们离婚作者:魔安...
- jasperReport Studio java报表设计(详细)
- 【leetcode】在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。
- 如何在命令行更改IP地址
- Git pull(拉取),push(上传)命令整理
- 明解C语言 【日】 柴田望洋 第十章 指针 代码清单和练习代码
- Linux环境下进行本地Blast比对——操作流程
- 微信小程序上线缓存及解决办法
- 如何在html页面中左尖括号,想要在HTML中显示一个尖括号“
- 苏黎世联邦理工学院计算机科学系,苏黎世联邦理工大学专业设置
- scilab 数组和字符串
- docker镜像容器创建和保存
- 苹果6s要下岗了,预算5000给推荐一款手机呗?
- 学什么编程语言的比较有前景?
热门文章
- html按钮样式_一组强大的CSS3 Material 按钮
- python处理网页弹窗_Selenium2+Python自动化-处理浏览器弹窗(转载)
- 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量
- “曲屏版iPhone 13 Pro” 2799元!荣耀60 SE新版上架:12GB+256GB超大存储
- 这个80后靠王者荣耀赚到93亿身家
- 上市之前再被爆出安全问题 卫龙辣条被爆吃出“锁精环”
- 5G iPhone SE或将在明年一季度推出 明年有望生产3000万部
- 319元!特斯拉卡车造型哨子发布 马斯克:快来买 别给苹果抛光布交智商税
- 微软冷箭射苹果:世界需要更开放的平台
- 阿里拍卖官方客服全面升级 推出一对一教你“一站式服务”