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

極品垃圾

初學VC ,就是把每天所看到的整理到博客,慢慢消化這些內容。見證我的學習之路吧。很多都是轉載。

公告

初學VC ,就是把每天所看到的整理到博客,慢慢消化這些內容。見證我的學習之路吧。很多都是轉載。
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

  • 隨筆 - 0
  • 文章 - 61
  • 評論 - 1
  • 引用 - 0

常用鏈接

留言簿(2)

隨筆分類

文章分類(55)

文章檔案(61)

搜索

  •  

最新評論

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

posted on 2008-11-10 10:52 極品垃圾 閱讀(486) 評論(0)  編輯 收藏 引用 所屬分類: 每天的學習所得


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线观看一区二区精品视频| 男女视频一区二区| 一区二区三区精品国产| 国产精品视频第一区| 欧美成人亚洲成人| 久久精品青青大伊人av| 国产日韩精品入口| 日韩视频―中文字幕| 99国产精品| 亚洲国产小视频| 欧美一区二区三区四区视频| 亚洲级视频在线观看免费1级| 亚洲第一黄网| 在线欧美亚洲| 开元免费观看欧美电视剧网站| 欧美一区二区三区在线观看视频| 欧美看片网站| 亚洲视频电影图片偷拍一区| 久久国产精品亚洲77777| 99国产一区| 欧美国产日韩一区二区三区| 欧美11—12娇小xxxx| 精品福利av| 久久一区免费| 欧美激情在线免费观看| 亚洲精品久久视频| 亚洲福利在线视频| 亚洲人成在线播放| 国产亚洲精品资源在线26u| 久久久久久夜| 欧美1区2区| 香蕉免费一区二区三区在线观看 | 国产精品久久久久毛片大屁完整版| 亚洲综合国产精品| 亚洲日本在线观看| 久久男人资源视频| 午夜免费日韩视频| 一本在线高清不卡dvd| 韩日成人av| 一区二区三区高清在线| 美女亚洲精品| 日韩午夜av电影| 国产欧美日韩中文字幕在线| 久久综合给合久久狠狠色| 一区二区日韩| 亚洲国产精品毛片| 欧美一区二区视频在线观看2020| 亚洲毛片在线观看.| 国产一区91| 国产精品系列在线| 亚洲一区二区三区成人在线视频精品| 在线电影院国产精品| 欧美视频中文在线看| 久久免费视频一区| 日韩网站在线| 欧美不卡三区| 欧美激情一区二区三区| 久久综合色影院| 看欧美日韩国产| 欧美在线视频二区| 99一区二区| 亚洲国产天堂久久综合网| 欧美手机在线| 久久久久久久欧美精品| 欧美一区二区三区久久精品茉莉花 | 99热在这里有精品免费| 亚洲精品孕妇| 亚洲激情图片小说视频| 91久久一区二区| 欧美精品二区| 欧美一区三区二区在线观看| 91久久精品国产91久久性色| 欧美大色视频| 亚洲激情国产| 亚洲视频在线一区| 亚洲男女自偷自拍| 欧美一区免费| 美国十次了思思久久精品导航| 久久男人资源视频| 欧美国产极速在线| 欧美大片免费观看在线观看网站推荐 | 欧美一区成人| 久久久久九九九九| 欧美丰满高潮xxxx喷水动漫| 91久久在线播放| 亚洲欧美日韩国产综合| 久久精品国产一区二区三区| 99re视频这里只有精品| 国产日韩精品一区二区三区 | 亚洲欧美国产三级| 久久本道综合色狠狠五月| 欧美成人免费播放| 国产精品一区二区三区观看| 精品不卡一区二区三区| 一区二区三区视频在线播放| 欧美一区二区三区在线观看视频| 麻豆成人小视频| 亚洲精选久久| 亚洲一区二区三区四区五区午夜| 欧美一区二区三区婷婷月色| 久久久久九九九| 欧美久久电影| 国产精品婷婷| 亚洲精品久久久久久久久久久| 亚洲在线视频观看| 久久另类ts人妖一区二区| 亚洲国产成人精品久久| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品99久久久久久白浆小说| 亚洲国产精品一区二区www在线| 亚洲人久久久| 亚洲一区二区毛片| 亚洲永久网站| 欧美一区二区三区在线看 | 亚洲日本国产| 欧美在线在线| 国产精品久久久久毛片大屁完整版| 欧美午夜不卡视频| 1024成人| 快射av在线播放一区| 国产精品99久久久久久久久| 久久久久国产精品一区| 国产欧美一区二区三区国产幕精品| 亚洲精品国产无天堂网2021| 欧美在线短视频| 亚洲免费高清| 欧美视频免费在线| 一区二区欧美国产| 日韩视频在线一区二区三区| 欧美日韩国产一区二区三区地区| 国产乱码精品一区二区三区五月婷 | 欧美日韩一区二区三区视频 | 久久综合五月| 亚洲综合色丁香婷婷六月图片| 欧美三级日韩三级国产三级| 一本色道久久综合亚洲精品不| 亚洲国产欧美在线人成| 久久久免费精品视频| 国产精品永久免费| 性久久久久久久| 国产精品99久久99久久久二8| 欧美三级免费| 午夜亚洲福利| 久久精品盗摄| 在线精品国产欧美| 亚洲国产成人久久综合| 欧美精品二区三区四区免费看视频| 在线观看亚洲a| 亚洲国产91| 欧美日韩精品欧美日韩精品 | 亚洲免费激情| 国产精品网站在线观看| 一本色道久久综合狠狠躁篇的优点| 亚洲人成高清| 国产精品一二一区| 老司机成人网| 欧美暴力喷水在线| 亚洲女人天堂成人av在线| 亚洲欧美一区二区精品久久久| 国产精品裸体一区二区三区| 欧美亚洲在线播放| 久久九九99| 亚洲少妇最新在线视频| 亚洲一区二区高清| 尤物在线精品| 亚洲国产高清在线| 国产精品日日摸夜夜摸av| 久久免费精品视频| 欧美另类高清视频在线| 亚洲手机视频| 久久精品欧洲| 亚洲另类黄色| 欧美一级大片在线观看| 91久久精品日日躁夜夜躁国产| 最新国产拍偷乱拍精品| 欧美亚日韩国产aⅴ精品中极品| 亚洲欧美日韩国产精品| 亚洲男人的天堂在线| 亚洲人成77777在线观看网| 91久久精品国产91性色tv| 欧美日韩三级电影在线| 久久精品国产久精国产思思 | 欧美日韩亚洲精品内裤| 日韩视频专区| 欧美在线啊v| a4yy欧美一区二区三区| 国产麻豆9l精品三级站| 欧美电影在线播放| 国产精品美女主播| 久久久综合精品| 国产精品国产三级国产aⅴ无密码| 麻豆av一区二区三区久久| 亚洲欧美电影在线观看| 亚洲成人在线免费| 日韩视频一区二区三区| 国内自拍视频一区二区三区| 日韩网站在线观看| 亚洲丁香婷深爱综合| 欧美在线视频观看| 亚洲午夜视频在线观看|