sscanf/scanf特殊用法 http://blog.csdn.net/lbird/article/details/1724429
来源:互联网 发布:政府网络维护员工资 编辑:程序博客网 时间:2024/06/10 00:03
%[ ] 的用法:%[ ]表示要读入一个字符集合, 如果[ 后面第一个字符是”^”,则表示反意思。
[ ]内的字符串可以是1或更多字符组成。空字符集(%[])是违反规定的,可
导致不可预知的结果。%[^]也是违反规定的。
%[a-z] 读取在 a-z 之间的字符串,如果不在此之前则停止,如
char s[]="hello, my friend” ; // 注意: ,逗号在不 a-z之间
sscanf( s, “%[a-z]”, string ) ; // string=hello
%[^a-z] 读取不在 a-z 之间的字符串,如果碰到a-z之间的字符则停止,如
char s[]="HELLOkitty” ; // 注意: ,逗号在不 a-z之间
sscanf( s, “%[^a-z]”, string ) ; // string=HELLO
%*[^=] 前面带 * 号表示不保存变量。跳过符合条件的字符串。
char s[]="notepad=1.0.0.1001" ;
char szfilename [32] = "" ;
int i = sscanf( s, "%*[^=]", szfilename ) ; // szfilename=NULL,因为没保存
int i = sscanf( s, "%*[^=]=%s", szfilename ) ; // szfilename=1.0.0.1001
%40c 读取40个字符
The run-time
library does not automatically append a null terminator
to the string, nor does reading 40 characters
automatically terminate the scanf() function. Because the
library uses buffered input, you must press the ENTER key
to terminate the string scan. If you press the ENTER before
the scanf() reads 40 characters, it is displayed normally,
and the library continues to prompt for additional input
until it reads 40 characters
%[^=] 读取字符串直到碰到’=’号,’^’后面可以带更多字符,如:
char s[]="notepad=1.0.0.1001" ;
char szfilename [32] = "" ;
int i = sscanf( s, "%[^=]", szfilename ) ; // szfilename=notepad
如果参数格式是:%[^=:] ,那么也可以从 notepad:1.0.0.1001读取notepad
使用例子:
char s[]="notepad=1.0.0.1001" ;
char szname [32] = "" ;
char szver [32] = “” ;
sscanf( s, "%[^=]=%s", szname , szver ) ; // szname=notepad, szver=1.0.0.1001
总结:%[]有很大的功能,但是并不是很常用到,主要因为:
1、许多系统的 scanf 函数都有漏洞. (典型的就是 TC 在输入浮点型时有时会出错).
2、用法复杂, 容易出错.
3、编译器作语法分析时会很困难, 从而影响目标代码的质量和执行效率.
个人觉得第3点最致命,越复杂的功能往往执行效率越低下。而一些简单的字符串分析我们可以自已处理。- sscanf/scanf特殊用法 http://blog.csdn.net/lbird/article/details/1724429
- Sizeof用法 http://blog.csdn.net/guanchanghui/article/details/1556319
- pthread_create用法 http://blog.csdn.net/tommy_wxie/article/details/8545253
- scanf/fscanf 的%[]和%n使用方法 http://blog.csdn.net/wesweeky/article/details/6439777
- net 2.0 BackgroundWorker类详细用法 http://blog.csdn.net/zhoufoxcn/article/details/1832819
- git remote 简单用法 http://blog.csdn.net/xiruanliuwei/article/details/6919416
- String.format的用法(http://blog.csdn.net/lu8000/article/details/11717331)
- 虚指针的用法(原出处//http://blog.csdn.net/haoel/article/details/1948051)
- fstream,ifstream,ofstream 详解与用法[http://blog.csdn.net/xiexievv/article/details/7226559]
- catgs用法(http://blog.csdn.net/wuziqi4/article/details/1709722)
- c语言中time函数的用法 http://blog.csdn.net/wangluojisuan/article/details/7045592
- tinyXML中FirstChild用法 http://blog.csdn.net/primer_programer/article/details/1968481
- http://blog.csdn.net/yejin191258966/article/details/8453909 java中Statement详细用法。
- Java中Synchronized的用法(原文: http://blog.csdn.net/luoweifu/article/details/46613015 )
- Android Canvas 和Paint的用法 转自http://blog.csdn.net/u010947098/article/details/44574171
- http://blog.csdn.net/IBM_hoojo/article/details/5688947
- http://blog.csdn.net/chenlaic/article/details/6143235
- http://blog.csdn.net/eaglewood2005/article/details/4335052
- 贪心算法之最小生成树Kruskal
- Lock-free atomic operations in Android
- CTO【chief technology officer 】
- 转:李开复谈创业失败十原因:经不住诱惑 直接山寨
- mysqladmin status下显示各个参数的意义
- sscanf/scanf特殊用法 http://blog.csdn.net/lbird/article/details/1724429
- iOS6对于shouldAutorotateToInterfaceOrientation的改动以及其他一些窗口相关细节
- CFRunLoop示例总结
- 【?】
- 改了几天,又回归到原来
- eclipse中tomcat内存溢出设置
- android语言设置
- Jquery修改CSS样式
- 内核博客