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有些類似,約束佈局的原理與相對佈局是一樣的,都是根據檢視與檢視之間的相互依賴,相對父級佈