1. 程式人生 > >C語言sscanf函式用法總結(一) 正則表示式

C語言sscanf函式用法總結(一) 正則表示式

 
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
void sscanf_test(void)
{
    int ret;
    char *string;
    int digit;
    char buf1[255];
    char buf2[255];
    char buf3[255];
    char buf4[255];


    /*1.最簡單的用法*/
    cout<<"======================================"<<endl;
    string = "UESTC EE 4200802";
    ret = sscanf(string, "%s %s %d", buf1, buf2, &digit);
    printf("1.string=%s\n", string);
    printf("1.ret=%d, buf1=%s, buf2=%s, digit=%d\n\n", ret, buf1, buf2, digit);
    /***********************************************
    1.string=UESTC EE 4200802
    1.ret=3, buf1=UESTC, buf2=EE, digit=4200802
    ***************************************************/


    /*2.取指定長度的字串*/
    cout<<"======================================"<<endl;
    string = "123456789";
    sscanf(string, "%5s", buf1);
    printf("2.string=%s\n", string);
    printf("2.buf1=%s\n\n", buf1);
    /****************************************
    2.string=123456789
    2.buf1=12345
    ***************************************/

    /*3.取到指定字元為止的字串*/
    cout<<"======================================"<<endl;
    string = "123/456";
    sscanf(string, "%[^/]", buf1);
    printf("3.string=%s\n", string);
    printf("3.buf1=%s\n\n", buf1);
    /********************************************
    3.string=123/456
    3.buf1=123
    ********************************************/

    /*4.取到指定字符集為止的字串*/
    cout<<"======================================"<<endl;
    string = "123abcABC";
    sscanf(string, "%[^A-Z]", buf1);
    printf("4.string=%s\n", string);
    printf("4.buf1=%s\n\n", buf1);
    /***********************************
    4.string=123abcABC
    4.buf1=123abc
    ************************************/

    /*5.取僅包含指定字符集的字串*/
    cout<<"======================================"<<endl;
    string = "0123abcABC";
    sscanf(string, "%[0-9]%[a-z]%[A-Z]", buf1, buf2, buf3);
    printf("5.string=%s\n", string);
    printf("5.buf1=%s, buf2=%s, buf3=%s\n\n", buf1, buf2, buf3);
    /*******************************************
    5.string=0123abcABC
    5.buf1=0123, buf2=abc, buf3=ABC
    *******************************************/

    /*6.獲取指定字元中間的字串*/
    cout<<"======================================"<<endl;
    string = "ios<Android>wp7";
    sscanf(string, "%*[^<]<%[^>]", buf1);
    printf("6.string=%s\n", string);
    printf("6.buf1=%s\n\n", buf1);
    /*************************************
    6.string=ios<Android>wp7
    6.buf1=Android
    ***************************************/

    /*7.指定要跳過的字串*/
    cout<<"======================================"<<endl;
    string = "iosVSandroid";
    sscanf(string, "%[a-z]VS%[a-z]", buf1, buf2);
    printf("7.string=%s\n", string);
    printf("7.buf1=%s, buf2=%s\n\n", buf1, buf2);
    /*******************************
    7.string=iosVSandroid
    7.buf1=ios, buf2=android
    ************************************/

    /*8.分割以某字元隔開的字串*/
    cout<<"======================================"<<endl;
    string = "android-iphone-wp7";
    /************************************************
    **字串取道'-'為止,後面還需要跟著分隔符'-',
    **起到過濾作用,有點類似於第7點
    *************************************************/
    sscanf(string, "%[^-]-%[^-]-%[^-]", buf1, buf2, buf3);
    printf("8.string=%s\n", string);
    printf("8.buf1=%s, buf2=%s, buf3=%s\n\n", buf1, buf2, buf3);
    /***********************************************
    8.string=android-iphone-wp7
    8.buf1=android, buf2=iphone, buf3=wp7
    **************************************************/

    /*9.提取郵箱地址*/
    cout<<"======================================"<<endl;
    string = "Email:
[email protected]
"; sscanf(string, "%[^:]:%[^@]@%[^.].%s", buf1, buf2, buf3, buf4); printf("9.string=%s\n", string); printf("9.buf1=%s, buf2=%s, buf3=%s, buf4=%s\n\n", buf1, buf2, buf3, buf4); /************************************** 9.string=Email:[email protected] 9.buf1=Email, buf2=shihui512, buf3=139, buf4=com *************************************/ } int main(int argc, char **argv) { sscanf_test(); return 0; } /****************************************** ====================================== 1.string=UESTC EE 4200802 1.ret=3, buf1=UESTC, buf2=EE, digit=4200802 ====================================== 2.string=123456789 2.buf1=12345 ====================================== 3.string=123/456 3.buf1=123 ====================================== 4.string=123abcABC 4.buf1=123abc ====================================== 5.string=0123abcABC 5.buf1=0123, buf2=abc, buf3=ABC ====================================== 6.string=ios<Android>wp7 6.buf1=Android ====================================== 7.string=iosVSandroid 7.buf1=ios, buf2=android ====================================== 8.string=android-iphone-wp7 8.buf1=android, buf2=iphone, buf3=wp7 ====================================== 9.string=Email:
[email protected]
9.buf1=Email, buf2=shihui512, buf3=139, buf4=com Process returned 0 (0x0) execution time : 0.109 s Press any key to continue. *******************************************/

相關推薦

C語言sscanf函式用法總結 表示式

#include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> using namespace std; void sscanf_te

linux學習筆記之shell程式設計表示式與字元處理

shell程式設計 基礎正則表示式 正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式 ####正則表示式常用的字元(注意區別於萬用字元裡面的符號)#### -*

C語言sscanf函式總結

在處理字串的程式當中,經常會分析字串,從一大長串的字串擷取我們需要的資料,這如果通過自己手寫函式來分析,雖然可以,但當你知道sscanf的功能,那就自己寫函式分析就顯得多此一舉。 這些函式的使用都很簡單,總結一下,等下次使用一目瞭然。俗話說:好記性不如爛筆頭,記錄下來就是效

c語言-樹的基礎知識

相交 ges 最大 .cn nbsp 分享 blog com lin 第一、樹的定義: 1.有且只有一個稱為根的節點 2.有若幹個互不相交的子樹,這些子樹本身也是一顆樹 第二、專業術語: 樹的深度:從根節點到最低層,節點的層數 ,稱之為樹的深度。

c語言數據類型

32位 9.png 溢出 ima con string sign unsigned 負數 (強數據類型) 1.常量   常量是程序中不可變的量   10為常量      兩種常量   #define 定義宏常量   const      #對於#define 類型的常量,c

C語言的學習之路——初識C語言

                      C語言的學習之路(一)——初識C語言 從9月8日踏入大學校園,已近過去40多天了。這篇部落格也是踏入大學的第一篇部落格。內心很慌:因為自己

c語言程式設計常見問題總結1

總結1: 將全域性變數放在會被多次呼叫的標頭檔案中,編譯會報錯:該變數被多次定義,所以是最好把全域性變數放在.c檔案中。 總結2:  Getche()函式,輸入後立即從控制檯取字元,不以回車為結束(帶回顯); Getch()是一個不回顯函式,當用戶按下某個字元時,函式自動讀

C語言面試題---指標篇

版本宣告:本文轉載於公眾號TeachPlus 指標的使用,一直是c語言面試題中必考的部分, 因為指標本身使用的複雜性與普適性,所以考點非常多,而且也可以與其他知識相互結合, 因此我們將會使用五篇專題的篇幅來介紹指標。分析下面的程式,指出程式中的錯誤:

《深度探索c++物件模型》筆記總結

首先先明確一個宗旨及兩個概念: 宗旨:C++在佈局及存取時間上主要的額外負擔是由virtual引起的 1.虛擬函式:C++多型的基本實現,沒什麼好說的,詳細見如下打包筆記:虛擬函式 2.虛基類:用來處理菱形繼承時候,在派生類中資料有重複的問題,見筆記:虛基類 ------------

菜鳥攻略——C語言多檔案程式設計初探

      發現有很多童鞋學了一年半載的C語言還不會多檔案程式設計。很多人到現在一個程式都只有一個原始檔(main.cpp或mian.c)。甚至連我的室友大飛哥(我們都大二下學期了)昨天也問我怎麼做。

《深度探索C++物件模型》學習總結——前言與導讀

前言 Foundation專案:為了構建大系統而努力定義的一個新的開發模型。 ALF:一種一面物件層次結構,提供一個永久的、以語意為基礎的表現法。 Simplifier的工作:轉換內部的程式表現。 任何物件模型都需要的轉換風味(?): 1. 與

C語言動態記憶體分配:malloc/free的實現及malloc實際分配/釋放的記憶體

一、malloc/free概述 malloc是在C語言中用於在程式執行時在堆中進行動態記憶體分配的庫函式。free是進行記憶體釋放的庫函式。 1、函式原型 #include <stdlib.h> void *malloc( size_t size

opencv中addWeighted()函式用法總結05

還是老習慣,分三步走。第一步,功能說明。第二步,結果圖顯示,第三步,API詳解。第四步,程式碼展示(註釋很詳細,保證所有有C++基礎的人都可以看懂。) 第一步,功能說明:addWeighted()函式是將兩張相同大小,相同型別的圖片融合的函式。他可以實現圖片的特效,不多說了

C++ STL開發溫習與總結: 1.C++程式設計技術

 C++ STL開發溫習與總結(一):1.C++程式設計技術       使用了多年C++,沒有系統的溫習總結過,所以準備溫習《C++STL程式設計師開發指南》,本系列篇章將會是溫習總結該書本概念和技術點。 1概論 l  C++語言是基於C語言的語法基礎上融入了其他語

c語言:順序表的實現 建立,插入,刪除,查詢,輸出等基本操作實現

#include<iostream> #include<stdio.h> #define LIST_INIT_SIZE 100 #define LIST_INCREMENT 10 using namespace std; struct Sqlist{

c++ primer plus 看後總結 c++特點與介紹

C++具有過程性、面向物件、泛型程式設計                 特點:  封裝 繼承  多型 抽象 C++融合了三種不同的程式設計方式:①C語言代表的過程性語言                               ②類代表的面向過程的語音  

嵌入式C語言實戰開發詳解

一、概述 1、嵌入式開發中為什麼選擇C語言? 因為作業系統的核心都是使用的C語言,而且C語言也有如下幾個優點: (1)出色的移植性,能在多種不同體系結構的軟/硬平臺上執行(修改量越小,移植性越好);

opencv中namedWindow( )函式用法總結02

還是老習慣,分三步走。第一步,功能說明。第二步,結果圖顯示,第三步,API詳解。第四步,程式碼展示(註釋很詳細,保證所有有C++基礎的人都可以看懂。) 第一步,功能說明:namedWindow()的功能就是新建一個顯示視窗。可以指定視窗的型別。 第二步,結果圖顯示:我

vue用法總結 -- 如何去掉url預設的錨點#

前言 vue專案中持續踩坑做一些記錄,以便後面翻閱 專案的url中會自帶#,看起來很不是舒服,其實是vue-router在搞怪,router跳轉有兩種實現方式:  1. hash(帶#)值模式,vue-router 預設 hash 模式 —— 使用 URL 的 hash

constrainlayout用法總結

       constrainlayout字面之意約束佈局,是google推出的用於最大化的解決佈局巢狀問題,同時減少佈局渲染時間,提升效能的佈局。與相對佈局Relativelayout有些類似,約束佈局的原理與相對佈局是一樣的,都是根據檢視與檢視之間的相互依賴,相對父級佈