按特定格式讀取字串的資料 sscanf的用法

2021-10-03 13:10:42 字數 4151 閱讀 3309

int

sscanf

(const

char

*buffer,

const

char

*format,

[ argument ]...);

buffer 儲存的資料

format 窗體控制項字串。 有關詳細資訊,請參閱"格式規範"。

argument 可選自變數

locale 要使用的區域設定

sscanf與scanf類似,都是用於輸入的,只是後者以鍵盤(stdin)為輸入源,前者以固定字串為輸入源。

%c 乙個單一的字元

%d 乙個十進位制整數

%i 乙個整數

%e, %f, %g 乙個浮點數

%o 乙個八進位制數

%s 乙個字串

%x 乙個十六進製制數

%p 乙個指標

%n 乙個等於讀取字元數量的整數

%u 乙個無符號整數

% 乙個字符集

%% 乙個精度符

函式將返回成功賦值的字段個數;返回值不包括已讀取但未賦值的字段個數。 返回值為 0 表示沒有將任何字段賦值。 如果在第一次讀取之前到達字串結尾,則返回eof。

char buf[

512]

;sscanf

("123456 "

,"%s"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456

//取指定長度的字串。如在下例中,取最大長度為4位元組的字串。

sscanf

("123456 "

,"%4s"

, buf)

;printf

("%s\n"

, buf)

;//結果為:1234

//取到指定字元為止的字串。如在下例中,取遇到空格為止字串。

sscanf

("123456 abcdedf"

,"%[^ ]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456

//取僅包含指定字符集的字串。如在下例中,取僅包含1到9和小寫字母的字串。

sscanf

("123456abcdedfbcdef"

,"%[1-9a-z]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456abcdedf

//取到指定字符集為止的字串。如在下例中,取遇到大寫字母為止的字串。

sscanf

("123456abcdedfbcdef"

,"%[^a-z]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456abcdedf

//給定乙個字串iios/12ddwdff@122,獲取 / 和 @ 之間的字串,先將 "iios/"過濾掉,再將非'@'的一串內容送到buf中

sscanf

("iios/12ddwdff@122"

,"%*[^/]/%[^@]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:12ddwdff

//給定乙個字串"hello, world",僅保留"world"。(注意:「,」之後有一空格)

sscanf

("hello, world"

,"%*s%s"

, buf)

;printf

("%s\n"

, buf)

;//結果為:world

buffer 儲存的資料

format 窗體控制項字串。 有關詳細資訊,請參閱"格式規範"。

argument 可選自變數

locale 要使用的區域設定

sscanf與scanf類似,都是用於輸入的,只是後者以鍵盤(stdin)為輸入源,前者以固定字串為輸入源。

%c 乙個單一的字元

%d 乙個十進位制整數

%i 乙個整數

%e, %f, %g 乙個浮點數

%o 乙個八進位制數

%s 乙個字串

%x 乙個十六進製制數

%p 乙個指標

%n 乙個等於讀取字元數量的整數

%u 乙個無符號整數

% 乙個字符集

%% 乙個精度符

函式將返回成功賦值的字段個數;返回值不包括已讀取但未賦值的字段個數。 返回值為 0 表示沒有將任何字段賦值。 如果在第一次讀取之前到達字串結尾,則返回eof。

char buf[

512]

;sscanf

("123456 "

,"%s"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456

//取指定長度的字串。如在下例中,取最大長度為4位元組的字串。

sscanf

("123456 "

,"%4s"

, buf)

;printf

("%s\n"

, buf)

;//結果為:1234

//取到指定字元為止的字串。如在下例中,取遇到空格為止字串。

sscanf

("123456 abcdedf"

,"%[^ ]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456

//取僅包含指定字符集的字串。如在下例中,取僅包含1到9和小寫字母的字串。

sscanf

("123456abcdedfbcdef"

,"%[1-9a-z]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456abcdedf

//取到指定字符集為止的字串。如在下例中,取遇到大寫字母為止的字串。

sscanf

("123456abcdedfbcdef"

,"%[^a-z]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:123456abcdedf

//給定乙個字串iios/12ddwdff@122,獲取 / 和 @ 之間的字串,先將 "iios/"過濾掉,再將非'@'的一串內容送到buf中

sscanf

("iios/12ddwdff@122"

,"%*[^/]/%[^@]"

, buf)

;printf

("%s\n"

, buf)

;//結果為:12ddwdff

//給定乙個字串"hello, world",僅保留"world"。(注意:「,」之後有一空格)

sscanf

("hello, world"

,"%*s%s"

, buf)

;printf

("%s\n"

, buf)

;//結果為:world

讀取採集的特定格式資料

target arm上實際採集的資料,byte輸出,讀取資料並輸出來 格式為意義 格式大小 ppdu id 1個int32 4bmac id 1個int32 4bmac addr 1個6位元組 hex 6bdata 1 dim陣列 256長度複數,先實部後虛部都是float16 256x4b imp...

練習 按指定格式拼接字串

題目 分析 1.首先準備乙個int陣列,內容是1,2,3 2.定義乙個方法,用來將陣列變成字串 三要素 返回值型別 string 方法名稱 fromarraytostring 引數列表 int 3.格式 word1 word2 word3 用到 for迴圈,字串拼接,每個陣列元素之前都有乙個word...

通過特定的字元擷取字串

方法 string address 上海市上海市浦東新區金橋鎮金葵新城2223號 string addressname 浦東新區 system.out.println address.indexof addressname system.err.println address.substring a...