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

唐吉訶德

  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>
            日韩午夜激情| 亚洲精品资源| 亚洲国产91精品在线观看| 男女av一区三区二区色多| 欧美中文在线观看国产| 精久久久久久久久久久| 欧美体内谢she精2性欧美| 欧美大片在线观看一区| 国产一区二区黄色| 欧美电影在线| 久久精品国产69国产精品亚洲| 亚洲人线精品午夜| 久久九九久精品国产免费直播| 亚洲专区国产精品| 一区二区三区视频在线观看 | 国产精品日韩在线播放| 久久在线免费观看| 性欧美xxxx视频在线观看| 亚洲精品中文字幕女同| 91久久精品一区二区别| 亚洲国产欧美一区| 国产日韩欧美制服另类| 中文网丁香综合网| 日韩视频在线一区| 亚洲欧洲另类国产综合| 亚洲欧美日本国产有色| 91久久黄色| 亚洲国产三级在线| 亚洲成色999久久网站| 国产欧美综合一区二区三区| 国产精品久久久一区麻豆最新章节| 99在线精品视频在线观看| 亚洲欧洲美洲综合色网| 亚洲精品在线观| 亚洲国产欧美日韩| 亚洲国产视频一区| 亚洲精品欧洲精品| 一区二区三区视频观看| 亚洲视频在线播放| 香蕉成人伊视频在线观看| 欧美国产成人精品| 欧美成人视屏| 日韩视频永久免费| 一区二区日韩伦理片| 亚洲一区二区在| 亚洲免费不卡| 亚洲欧洲av一区二区三区久久| 亚洲欧美www| 久久久久久久久伊人| 亚洲第一色在线| 久久女同精品一区二区| 最新中文字幕一区二区三区| 亚洲一区二区视频在线| 一区二区三区四区五区视频| 亚洲一级在线| 亚洲国产精品第一区二区三区| 欧美日韩大片| 国产精品免费一区二区三区观看| 国产日韩在线看片| 最新中文字幕一区二区三区| 午夜精品成人在线| 欧美福利视频| 亚洲在线1234| 麻豆91精品91久久久的内涵| 欧美一区二区三区在| 亚洲欧美视频在线观看| 免费不卡在线视频| 欧美日韩一区二区三区四区在线观看 | 久久一二三四| 欧美不卡福利| 亚洲欧美综合v| 欧美精品亚洲一区二区在线播放| 国产亚洲精品v| 亚洲午夜激情在线| 亚洲成色777777女色窝| 久久久国产精品亚洲一区| 欧美激情一区二区三区| 午夜日韩视频| 欧美日韩国产在线一区| 亚洲高清不卡av| 亚洲欧美另类国产| 亚洲福利一区| 久久久久久黄| 国产视频久久| 性18欧美另类| 亚洲午夜成aⅴ人片| 欧美精品v日韩精品v国产精品| 国产亚洲制服色| 欧美成人性网| 国产亚洲综合性久久久影院| 亚洲欧美在线免费| 亚洲色图综合久久| 欧美精品一区二区蜜臀亚洲| 在线看无码的免费网站| 玖玖国产精品视频| 欧美一区二区三区视频免费| 亚洲欧美在线一区| 国产精品久久9| 在线视频你懂得一区二区三区| 亚洲国产天堂久久综合网| 久久亚洲精品一区| 在线不卡视频| 欧美h视频在线| 亚洲日本激情| 欧美国产一区在线| 亚洲日本免费| 亚洲乱码一区二区| 欧美大片18| 一本久久a久久精品亚洲| 欧美成人午夜激情视频| 欧美刺激性大交免费视频| 亚洲精品永久免费| 99riav国产精品| 国产精品一区免费视频| 久久精品在线播放| 久久久久久久久久看片| 亚洲国产精品久久久久秋霞不卡 | 久久久av水蜜桃| 夜夜嗨av一区二区三区免费区| 欧美中文在线观看国产| 亚洲午夜一区二区| 欧美理论电影网| 欧美激情一区二区三区在线视频观看 | 黑人操亚洲美女惩罚| 这里只有精品视频在线| 亚洲免费精品| 免费在线成人av| 欧美福利一区二区三区| …久久精品99久久香蕉国产| 久久久99爱| 男人的天堂亚洲在线| 国产在线不卡视频| 亚洲在线成人精品| 亚洲欧美日韩高清| 欧美亚日韩国产aⅴ精品中极品| 日韩视频一区二区三区在线播放免费观看 | 一本久道久久综合中文字幕| 欧美激情成人在线| 欧美黄色影院| 日韩视频在线观看| 欧美激情一区二区| 日韩视频精品在线| 亚洲夜间福利| 国产精品亚洲精品| 欧美亚洲网站| 女主播福利一区| 亚洲人成网站色ww在线| 欧美精品 国产精品| 洋洋av久久久久久久一区| 亚洲欧美日韩专区| 国产午夜亚洲精品理论片色戒| 欧美伊人久久久久久久久影院| 久久久久久9999| 亚洲国产另类 国产精品国产免费| 欧美国产视频日韩| 亚洲一区三区电影在线观看| 久久xxxx| 在线日本高清免费不卡| 欧美成人激情视频免费观看| 亚洲精品久久久久久久久久久 | 国产精品一区二区三区免费观看| 午夜欧美精品| 欧美激情第10页| 欧美激情精品久久久久| 亚洲看片一区| 久久亚洲精品伦理| 亚洲每日更新| 国产一区二区三区电影在线观看 | 亚洲大片一区二区三区| 亚洲婷婷国产精品电影人久久| 国产午夜久久| 欧美日韩一区二区三区在线视频| 欧美一区不卡| 日韩视频一区二区三区| 久久综合国产精品台湾中文娱乐网| 亚洲人成啪啪网站| 国产一区视频观看| 欧美日韩麻豆| 老巨人导航500精品| 亚洲一区二区少妇| 亚洲国产日韩欧美在线99| 久久久久国产一区二区| 99日韩精品| 亚洲国产精品ⅴa在线观看 | 国产偷自视频区视频一区二区| 欧美第一黄色网| 久久精品亚洲一区二区三区浴池| 亚洲毛片av| 亚洲第一黄色网| 久久精品中文字幕一区二区三区| 亚洲手机在线| 亚洲裸体在线观看| 在线观看一区| 国产性做久久久久久| 国产精品久久久久99| 欧美日韩精品免费观看视频| 女主播福利一区| 狼人社综合社区| 久久久噜噜噜久久久| 欧美一区二区三区喷汁尤物|