青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

唐吉訶德

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  5 Posts :: 75 Stories :: 3 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

這里有些sscanf()的一些使用說明,都是從論壇,Blog里整理出來的。供大家使用。
   通過學(xué)習(xí)和使用個(gè)人認(rèn)為,在字符串格式不是很復(fù)雜,但是也并不簡(jiǎn)單的時(shí)候用這個(gè)函數(shù)比較合適,這個(gè)尺度就要靠自己把握了,字符串不是很復(fù)雜,但自己寫個(gè)處理的函數(shù)比較麻煩,效率也不高,就用這個(gè)函數(shù),如果字符串很復(fù)雜,那就用正則表達(dá)式吧。
不多說了,看看下面這些介紹和列子吧!
名稱:sscanf() - 從一個(gè)字符串中讀進(jìn)與指定格式相符的數(shù)據(jù).
函數(shù)原型:
Int  sscanf( string str, string fmt, mixed var1, mixed var2 ... );
int  scanf( const char *format [,argument]... );
說明:
sscanf與scanf類似,都是用于輸入的,只是后者以屏幕(stdin)為輸入源,前者以固定字符串為輸入源。
其中的format可以是一個(gè)或多個(gè) {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符號(hào)}
支持集合操作:
     %[a-z] 表示匹配a到z中任意字符,貪婪性(盡可能多的匹配)
     %[aB'] 匹配a、B、'中一員,貪婪性
     %[^a] 匹配非a的任意字符,貪婪性
例子:
1. 常見用法。
    char buf[512] = {0};
    sscanf("123456 ", "%s", buf);
    printf("%s\n", buf);
結(jié)果為:123456
2. 取指定長(zhǎng)度的字符串。如在下例中,取最大長(zhǎng)度為4字節(jié)的字符串。
    sscanf("123456 ", "%4s", buf);
    printf("%s\n", buf);
結(jié)果為:1234
3. 取到指定字符為止的字符串。如在下例中,取遇到空格為止字符串。
    sscanf("123456 abcdedf", "%[^ ]", buf);
    printf("%s\n", buf);
結(jié)果為:123456
 
4.  取僅包含指定字符集的字符串。如在下例中,取僅包含1到9和小寫字母的字符串。
    sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
    printf("%s\n", buf);
結(jié)果為:123456abcdedf
 
5.  取到指定字符集為止的字符串。如在下例中,取遇到大寫字母為止的字符串。
    sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
    printf("%s\n", buf);
結(jié)果為:123456abcdedf
6、給定一個(gè)字符串iios/12DDWDFF@122,獲取 / 和 @ 之間的字符串,先將 "iios/"過濾掉,再將非'@'的一串內(nèi)容送到buf中
    sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
    printf("%s\n", buf);
結(jié)果為:12DDWDFF
 
7、給定一個(gè)字符串““hello, world”,僅保留world。(注意:“,”之后有一空格)
    sscanf(“hello, world”,  "%*s%s",  buf);  
    printf("%s\n", buf);
結(jié)果為:world
%*s表示第一個(gè)匹配到的%s被過濾掉,即hello被過濾了
如果沒有空格則結(jié)果為NULL。
8、
 char *s="1try234delete5" 
則:
sscanf(s, "1%[^2]234%[^5]", s1, s2);
scanf的format中出現(xiàn)的非轉(zhuǎn)換字符(%之前或轉(zhuǎn)換字符之后的字符),即此例中的1234用來跳過輸入中的相應(yīng)字符;
‘[]’的含義與正則表達(dá)式中相同,表示匹配其中出現(xiàn)的字符序列;^表示相反。使用[ ]時(shí)接收輸入的變量必須是有足夠存儲(chǔ)空間的char、signed char、unsigned char數(shù)組。記住[也是轉(zhuǎn)換字符,所以沒有s了。
8、分割以某字符標(biāo)記的字符串。
 char test[]="222,333,444,,,555,666";
 char s1[4],s2[4],s3[4],s4[4],s5[4],s6[4],s7[4];
 sscanf(test,"%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,]",s1,s2,s3,s4,s5,s6,s7);
 printf("sssa1=%s",s1);
 printf("sssa2=%s",s2);
 printf("sssa3=%s",s3);
 printf("sssa4=%s",s4);
 printf("sssa5=%s",s5);
 printf("sssa6=%s",s6);
 printf("sssa7=%s",s7);
9、一個(gè)提取用戶個(gè)人資料中郵件地址的例子
#include<cstdlib>
#include<cstdio>
using namespace std;
int main()
{
    char a[20]={0};
    char b[20]={0};
    //假設(shè)email地址信息以';'結(jié)束
    sscanf("email:jimmywhr@gmail.com;","%*[^:]:%[^;]",a);
    //假設(shè)email地址信息沒有特定的結(jié)束標(biāo)志
    sscanf("email:jimmywhr@gmail.com","%*[^:]:%s",b);
    printf("%s\n",a);
    printf("%s\n",b);
    system("pause");
    return 0;
}
  關(guān)鍵是"%*[^:]:%[^;]"和"%*[^:]:%s"這兩個(gè)參數(shù)的問題
  %*[^:]    表示滿足"[]"里的條件將被過濾掉,不會(huì)向目標(biāo)參數(shù)中寫入值。這里的意思是在
            第一個(gè)':'之前的字符會(huì)在寫入時(shí)過濾掉,'^'是表示否定的意思,整個(gè)參數(shù)翻譯
            成白話就是:將在遇到第一個(gè)':'之前的(不為':'的)字符全部過濾掉。
  :         自然就是跳過':'的意思。
  %[^;]     拷貝字符直到遇到';'。
一下摘自:http://blog.csdn.net/lbird/archive/2007/08/03/1724429.aspx
%[ ] 的用法:%[ ]表示要讀入一個(gè)字符集合, 如果[ 后面第一個(gè)字符是”^”,則表示反意思。
                     [ ]內(nèi)的字符串可以是1或更多字符組成。空字符集(%[])是違反規(guī)定的,可
                     導(dǎo)致不可預(yù)知的結(jié)果。%[^]也是違反規(guī)定的。
         
%[a-z] 讀取在 a-z 之間的字符串,如果不在此之前則停止,如
              char s[]="hello, my friend” ;         // 注意: ,逗號(hào)在不 a-z之間
              sscanf( s, “%[a-z]”, string ) ; // string=hello

%[^a-z] 讀取不在 a-z 之間的字符串,如果碰到a-z之間的字符則停止,如
              char s[]="HELLOkitty” ;         // 注意: ,逗號(hào)在不 a-z之間
              sscanf( s, “%[^a-z]”, string ) ; // string=HELLO

%*[^=]    前面帶 * 號(hào)表示不保存變量。跳過符合條件的字符串。
              char s[]="notepad=1.0.0.1001" ;
       char szfilename [32] = "" ;
       int i = sscanf( s, "%*[^=]", szfilename ) ; // szfilename=NULL,因?yàn)闆]保存
 int i = sscanf( s, "%*[^=]=%s", szfilename ) ; // szfilename=1.0.0.1001
%40c      讀取40個(gè)字符
       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

%[^=]     讀取字符串直到碰到’=’號(hào),’^’后面可以帶更多字符,如:
              char s[]="notepad=1.0.0.1001" ;
       char szfilename [32] = "" ;
       int i = sscanf( s, "%[^=]", szfilename ) ; // szfilename=notepad     
       如果參數(shù)格式是:%[^=:] ,那么也可以從 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
總結(jié):%[]有很大的功能,但是并不是很常用到,主要因?yàn)椋?/div>
1、許多系統(tǒng)的 scanf 函數(shù)都有漏洞. (典型的就是 TC 在輸入浮點(diǎn)型時(shí)有時(shí)會(huì)出錯(cuò)).
2、用法復(fù)雜, 容易出錯(cuò).
3、編譯器作語(yǔ)法分析時(shí)會(huì)很困難, 從而影響目標(biāo)代碼的質(zhì)量和執(zhí)行效率.
個(gè)人覺得第3點(diǎn)最致命,越復(fù)雜的功能往往執(zhí)行效率越低下。而一些簡(jiǎn)單的字符串分析我們可以自已處理。

以前只是簡(jiǎn)單是使用sscanf,卻沒發(fā)現(xiàn)其還有如此強(qiáng)大的功能
 char str0[100],str1[100],str2[100],str3[100];

 sscanf("abcde abc 123 aaa","%s %s %s %s",str0,str1,str2,str3);
 結(jié)果:str0="abcde"   str1="abc"  str2 = "123" str3="aaa"

 sscanf("abcde abc 123 aaa","abc%s %s %*d %s",str0,str1,str3);
 結(jié)果:str0="abcde"   str1="abc"  str3="aaa"

 sscanf("abc123 efg456","%4s",str0);
 結(jié)果:str0="abc1"   

 sscanf("abc123 efg456a4","%[a-z 1-5]",str0);
 結(jié)果:str0="abc123 efg45"   

sscanf("abc123 efg456a4","%[a-z1-5]",str0);
 結(jié)果:str0="abc123" 

 sscanf("ABCTabcZ123 efg456","%[A-P]",str0);
 結(jié)果:str0="ABC"   

 sscanf("abc 12345","%[^ ]",str0);
 結(jié)果:str0="abc"   

 sscanf("abc 12345","%[^4]",str0);
 結(jié)果:str0="abc 123"   

 sscanf("fdaBs 52aB1asdf","%[^4-0]",str0);
 結(jié)果:str0="fdaBs 5"   

 sscanf("abc 12345","%[^ ]%[^3]",str0,str1);
 結(jié)果:str0="abc"    str1="12"

 sscanf("abc301abc2345","%*[^9-0]%s",str0); 
 結(jié)果:str0="301abc2345"   
 sscanf("bca@123efg4@5abc","%*[^@]@%[^@]",str0);
 結(jié)果:str0="123efg4"   

posted on 2010-04-25 10:47 心羽 閱讀(3783) 評(píng)論(1)  編輯 收藏 引用 所屬分類: VC/MFC

Feedback

# re: sscanf()的一些使用說明 2014-03-13 17:56 wewea
謝謝  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            樱桃国产成人精品视频| 午夜国产精品影院在线观看| 国产精品日韩久久久久| 久久精品国产第一区二区三区最新章节| 欧美一级大片在线观看| 国产精品日韩在线观看| 99精品欧美一区二区三区| 久久精品国产综合| 亚洲综合丁香| 亚洲欧美日本另类| 亚洲一区日韩在线| 99国产一区| 亚洲巨乳在线| 日韩视频在线一区| 亚洲免费观看高清在线观看| 亚洲精选一区二区| 亚洲一级黄色av| 欧美一激情一区二区三区| 久久久久久一区二区三区| 欧美专区18| 欧美国产综合一区二区| 亚洲美女在线视频| 亚洲电影免费观看高清完整版在线观看 | 99国内精品| 亚洲女人天堂成人av在线| 99精品免费| 亚洲五月六月| 亚洲麻豆视频| 久久国产精品亚洲va麻豆| 久久久水蜜桃| 噜噜噜91成人网| 国产精品久在线观看| 亚洲韩日在线| 欧美专区18| 亚洲影院在线观看| 女同性一区二区三区人了人一| 欧美三日本三级少妇三2023| 国产欧美日韩亚洲一区二区三区| 国产一区二区毛片| 一区二区三区视频观看| 久久久久免费视频| 一区二区三区免费看| 免费成人在线观看视频| 国产最新精品精品你懂的| 亚洲制服欧美中文字幕中文字幕| 欧美国产第一页| 午夜国产精品视频| 国产日韩欧美一区二区| 日韩午夜在线| 欧美电影免费网站| 亚洲一区二区三区四区五区黄| 欧美激情视频一区二区三区免费| 久久久精品2019中文字幕神马| 国产精品久久久久9999| 午夜国产不卡在线观看视频| 亚洲视频高清| 国产日产欧美a一级在线| 久久看片网站| 榴莲视频成人在线观看| 狠狠做深爱婷婷久久综合一区| 香蕉久久a毛片| 性色一区二区| 亚洲日本精品国产第一区| 一本色道久久综合狠狠躁的推荐| 欧美日韩成人一区二区三区| 亚洲一区二区欧美日韩| 欧美一区2区视频在线观看| 国产精品一区二区欧美| 亚洲精品1区2区| 在线看欧美日韩| 久久久蜜桃精品| 久久亚洲综合网| 黑人一区二区三区四区五区| 午夜在线成人av| 久久精品国产欧美激情| 国产精品视频在线观看| 亚洲精品一区在线观看香蕉| 亚洲日本成人| 欧美高清在线视频观看不卡| 欧美激情第3页| 亚洲国产导航| 欧美另类在线观看| 影音先锋在线一区| 久久久久久97三级| 欧美激情按摩在线| 欧美成人中文字幕在线| 欧美国产精品日韩| 亚洲无人区一区| 亚洲伊人久久综合| 国产亚洲在线观看| 欧美va日韩va| 亚洲人人精品| 亚洲乱码国产乱码精品精98午夜| 老司机精品视频网站| 亚洲国产精品热久久| 亚洲综合首页| 毛片av中文字幕一区二区| 午夜一区二区三区不卡视频| 亚洲高清在线精品| 国产麻豆午夜三级精品| 欧美成人激情视频| 亚洲综合色在线| 亚洲国产精品小视频| 国产精品你懂的在线| 欧美国产亚洲精品久久久8v| 亚洲无限乱码一二三四麻| 亚洲国产精品久久久久秋霞不卡| 亚洲欧美欧美一区二区三区| 9色国产精品| 欧美激情一区二区三区在线视频观看| 亚洲日本中文字幕免费在线不卡| 国产亚洲午夜| 国产亚洲美州欧州综合国| 国产精品久久久久久久久久三级| 欧美激情精品久久久久久久变态| 欧美在线免费观看| 久久国产精品亚洲va麻豆| 久久久精品免费视频| 久久久久高清| 嫩模写真一区二区三区三州| 新狼窝色av性久久久久久| 亚洲视频1区| 小黄鸭精品aⅴ导航网站入口| 亚洲免费在线观看视频| 午夜亚洲性色福利视频| 亚洲欧美国产精品桃花| 亚洲一区二区综合| 久久国产手机看片| 欧美不卡一区| 亚洲免费高清| 欧美一级在线亚洲天堂| 欧美11—12娇小xxxx| 欧美三级午夜理伦三级中视频| 欧美性色视频在线| 一区三区视频| 香蕉乱码成人久久天堂爱免费| 久久人人97超碰人人澡爱香蕉| 亚洲第一久久影院| 亚洲影音先锋| 欧美日韩成人综合| 在线日韩欧美视频| 性做久久久久久久免费看| 欧美成人四级电影| 亚洲欧美中文日韩v在线观看| 欧美精品123区| 亚洲国产成人久久综合一区| 久久成人精品视频| 日韩视频在线播放| 欧美日本网站| 亚洲精选大片| 日韩视频中文| 国产精品久久久久久久免费软件| 国产精品99久久久久久人 | 国产精品v亚洲精品v日韩精品| 亚洲高清视频的网址| 欧美国产视频在线观看| 久久亚洲二区| 9色精品在线| 夜夜嗨av一区二区三区| 欧美视频在线免费看| 欧美一区二粉嫩精品国产一线天| 亚洲一区精品视频| 亚洲风情亚aⅴ在线发布| 欧美成人性生活| 欧美精品一区二区三区在线播放| 亚洲精品一区二区三区蜜桃久| 欧美不卡在线视频| 亚洲高清视频在线| 欧美日韩一区二区欧美激情| 久久成人羞羞网站| 一本久久a久久精品亚洲| 正在播放亚洲一区| 亚洲美女淫视频| 亚洲免费影院| 一本大道久久a久久综合婷婷| 亚洲女人小视频在线观看| 亚洲精品免费在线播放| 亚洲午夜激情网站| 亚洲精品少妇30p| 久久午夜视频| 欧美影院成年免费版| 欧美先锋影音| 亚洲国产第一| 91久久久久久| 欧美www视频| 欧美二区视频| 亚洲电影有码| 欧美11—12娇小xxxx| 蜜桃av综合| 亚洲茄子视频| 欧美日韩精品免费在线观看视频| 欧美成人午夜77777| 1000部国产精品成人观看| 久久九九有精品国产23| 欧美在线高清| 国产综合色精品一区二区三区| 久久久精品五月天| 欧美国产三区| 亚洲乱码精品一二三四区日韩在线 | 中日韩美女免费视频网址在线观看 |