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

唐吉訶德

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

常用鏈接

留言簿(2)

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

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

這里有些sscanf()的一些使用說(shuō)明,都是從論壇,Blog里整理出來(lái)的。供大家使用。
   通過(guò)學(xué)習(xí)和使用個(gè)人認(rèn)為,在字符串格式不是很復(fù)雜,但是也并不簡(jiǎn)單的時(shí)候用這個(gè)函數(shù)比較合適,這個(gè)尺度就要靠自己把握了,字符串不是很復(fù)雜,但自己寫(xiě)個(gè)處理的函數(shù)比較麻煩,效率也不高,就用這個(gè)函數(shù),如果字符串很復(fù)雜,那就用正則表達(dá)式吧。
不多說(shuō)了,看看下面這些介紹和列子吧!
名稱:sscanf() - 從一個(gè)字符串中讀進(jìn)與指定格式相符的數(shù)據(jù).
函數(shù)原型:
Int  sscanf( string str, string fmt, mixed var1, mixed var2 ... );
int  scanf( const char *format [,argument]... );
說(shuō)明:
sscanf與scanf類(lèi)似,都是用于輸入的,只是后者以屏幕(stdin)為輸入源,前者以固定字符串為輸入源。
其中的format可以是一個(gè)或多個(gè) {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符號(hào)}
支持集合操作:
     %[a-z] 表示匹配a到z中任意字符,貪婪性(盡可能多的匹配)
     %[aB'] 匹配a、B、'中一員,貪婪性
     %[^a] 匹配非a的任意字符,貪婪性
例子:
1. 常見(jiàn)用法。
    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和小寫(xiě)字母的字符串。
    sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);
    printf("%s\n", buf);
結(jié)果為:123456abcdedf
 
5.  取到指定字符集為止的字符串。如在下例中,取遇到大寫(xiě)字母為止的字符串。
    sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);
    printf("%s\n", buf);
結(jié)果為:123456abcdedf
6、給定一個(gè)字符串iios/12DDWDFF@122,獲取 / 和 @ 之間的字符串,先將 "iios/"過(guò)濾掉,再將非'@'的一串內(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被過(guò)濾掉,即hello被過(guò)濾了
如果沒(méi)有空格則結(jié)果為NULL。
8、
 char *s="1try234delete5" 
則:
sscanf(s, "1%[^2]234%[^5]", s1, s2);
scanf的format中出現(xiàn)的非轉(zhuǎn)換字符(%之前或轉(zhuǎn)換字符之后的字符),即此例中的1234用來(lái)跳過(guò)輸入中的相應(yīng)字符;
‘[]’的含義與正則表達(dá)式中相同,表示匹配其中出現(xiàn)的字符序列;^表示相反。使用[ ]時(shí)接收輸入的變量必須是有足夠存儲(chǔ)空間的char、signed char、unsigned char數(shù)組。記住[也是轉(zhuǎn)換字符,所以沒(méi)有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地址信息沒(méi)有特定的結(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ù)的問(wèn)題
  %*[^:]    表示滿足"[]"里的條件將被過(guò)濾掉,不會(huì)向目標(biāo)參數(shù)中寫(xiě)入值。這里的意思是在
            第一個(gè)':'之前的字符會(huì)在寫(xiě)入時(shí)過(guò)濾掉,'^'是表示否定的意思,整個(gè)參數(shù)翻譯
            成白話就是:將在遇到第一個(gè)':'之前的(不為':'的)字符全部過(guò)濾掉。
  :         自然就是跳過(guò)':'的意思。
  %[^;]     拷貝字符直到遇到';'。
一下摘自: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)表示不保存變量。跳過(guò)符合條件的字符串。
              char s[]="notepad=1.0.0.1001" ;
       char szfilename [32] = "" ;
       int i = sscanf( s, "%*[^=]", szfilename ) ; // szfilename=NULL,因?yàn)闆](méi)保存
 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è)人覺(jué)得第3點(diǎn)最致命,越復(fù)雜的功能往往執(zhí)行效率越低下。而一些簡(jiǎn)單的字符串分析我們可以自已處理。

以前只是簡(jiǎn)單是使用sscanf,卻沒(méi)發(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 心羽 閱讀(3794) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): VC/MFC

Feedback

# re: sscanf()的一些使用說(shuō)明 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>
            欧美777四色影视在线| 91久久精品日日躁夜夜躁欧美| 久久婷婷av| 欧美三级电影大全| 欧美成人精品在线视频| 国产精品欧美经典| 亚洲国产欧美不卡在线观看| 国产欧美亚洲一区| 亚洲乱码国产乱码精品精可以看| 在线播放亚洲| 欧美一区二区在线看| 午夜精品久久久久久久| 欧美日韩精品免费观看视一区二区| 美日韩免费视频| 韩国福利一区| 亚洲欧美中文日韩v在线观看| 亚洲丝袜av一区| 欧美国产精品久久| 欧美福利电影网| 亚洲电影在线播放| 久久精品国语| 久久久久久久久伊人| 国产精品久久一卡二卡| 一本色道久久88精品综合| 一区二区三区欧美成人| 欧美激情1区| 亚洲国产欧美一区二区三区丁香婷| 一区二区三区无毛| 久久久91精品国产一区二区三区 | 久久一日本道色综合久久| 久久精品亚洲一区二区三区浴池| 国产农村妇女毛片精品久久莱园子 | 欧美国产大片| 亚洲激情中文1区| 日韩视频精品在线观看| 欧美国产在线观看| 亚洲美女精品成人在线视频| 在线亚洲伦理| 国产精品欧美激情| 欧美一区二区在线免费播放| 久久久综合网| 亚洲国产婷婷综合在线精品 | 欧美成人午夜剧场免费观看| 免费高清在线视频一区·| 亚洲第一免费播放区| 欧美高清视频一区| 一区二区福利| 久久激情久久| 在线不卡视频| 欧美日韩不卡视频| 亚洲女性裸体视频| 猛干欧美女孩| 一区二区三区高清视频在线观看| 欧美亚男人的天堂| 欧美在线视频二区| 欧美国产精品劲爆| 亚洲综合国产| 一区二区在线免费观看| 欧美激情一区二区| 亚洲欧美三级伦理| 亚洲国产精品黑人久久久| 亚洲免费网址| 亚洲国产精品精华液网站| 欧美三级网址| 久久乐国产精品| 一区二区成人精品| 免费欧美电影| 亚洲欧美网站| 亚洲精品国产精品国自产观看浪潮| 欧美日韩一级大片网址| 久久国产精品网站| 日韩视频―中文字幕| 久久国产主播精品| 99成人在线| 激情一区二区| 国产精品日韩在线一区| 欧美成人午夜剧场免费观看| 亚洲欧美在线免费| 亚洲九九精品| 欧美激情精品久久久六区热门| 午夜精品剧场| 亚洲视频香蕉人妖| 91久久精品美女高潮| 国产视频在线观看一区 | 欧美xxx在线观看| 欧美一区二区三区在线免费观看| 亚洲人精品午夜| 蜜臀a∨国产成人精品| 亚洲自拍电影| 一本色道久久综合亚洲91| 亚洲国产精品va在线观看黑人| 国产欧美一区二区精品秋霞影院| 欧美日韩精品在线播放| 媚黑女一区二区| 久久九九国产| 久久大逼视频| 亚洲欧美日韩国产中文在线| 一区二区高清在线| 亚洲精品亚洲人成人网| 亚洲国产一区二区视频| 你懂的亚洲视频| 免费成人高清在线视频| 久久精品国产一区二区三区| 午夜精品在线看| 亚洲综合电影| 性欧美1819性猛交| 欧美在线|欧美| 欧美一级大片在线观看| 午夜国产不卡在线观看视频| 亚洲午夜精品网| 亚洲一区在线观看视频| 亚洲午夜激情网站| 亚洲一品av免费观看| 一区二区日本视频| 亚洲综合欧美| 羞羞色国产精品| 久久超碰97人人做人人爱| 欧美一区二区在线播放| 性欧美大战久久久久久久免费观看| 亚洲综合色视频| 欧美一区二区三区四区在线| 欧美制服丝袜第一页| 久久久精彩视频| 久久综合久久久久88| 欧美成人精品三级在线观看| 亚洲国产另类精品专区| 日韩午夜电影| 亚洲影视中文字幕| 欧美一区1区三区3区公司| 久久久亚洲成人| 欧美国产乱视频| 欧美午夜在线观看| 国产亚洲aⅴaaaaaa毛片| 一区二区亚洲精品国产| 亚洲精品一区二| 亚洲一区欧美激情| 久久久久久久国产| 亚洲国产精品999| 一区二区欧美精品| 久久久噜噜噜久久狠狠50岁| 欧美freesex交免费视频| 国产精品国产三级国产| 韩国一区电影| 国产精品99久久久久久白浆小说| 欧美在线免费观看视频| 男同欧美伦乱| 亚洲视频高清| 美女国内精品自产拍在线播放| 欧美三级在线播放| 在线观看久久av| 亚洲一区二区精品在线| 噜噜噜噜噜久久久久久91| 亚洲免费不卡| 久久久久国产精品人| 欧美视频免费在线| 亚洲高清在线观看| 欧美一站二站| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久精品综合网| 日韩视频在线观看国产| 久久精品首页| 国产精品久久久久久久久久免费看 | 久久漫画官网| 一本一本久久a久久精品综合妖精| 欧美在线日韩| 国产精品免费观看在线| 亚洲精品美女在线观看| 久久免费视频在线| 亚洲午夜激情免费视频| 欧美好骚综合网| 精久久久久久久久久久| 欧美一区二区免费观在线| 亚洲日韩欧美视频一区| 久久久久久久国产| 国产亚洲精品美女| 亚洲男女自偷自拍| 亚洲精品视频二区| 欧美大片在线看| 亚洲电影欧美电影有声小说| 欧美在线观看一区| 亚洲视频一区在线观看| 欧美电影在线免费观看网站| 伊人精品成人久久综合软件| 久久精品盗摄| 性感少妇一区| 国产精品一区二区三区观看| 宅男精品视频| 9久草视频在线视频精品| 欧美成人免费在线观看| 亚洲黄色免费| 欧美成人a视频| 美女精品视频一区| 亚洲国产精品小视频| 欧美aa在线视频| 久久免费少妇高潮久久精品99| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲欧美成人在线| 亚洲一级黄色| 国产一级一区二区| 久久亚洲国产精品日日av夜夜|