C stdio sscanf() 函式
示例
從字串中提取數字
char number[] = "24 hours";
int num;
sscanf(number, "%d", num);
printf("%d", num);
定義和用法
sscanf()
函式從一個 char
陣列中讀取資料,並將其寫入由引數指定的記憶體位置。
sscanf()
函式定義在 <stdio.h>
標頭檔案中。
format 引數是一個字串,用於描述從檔案中預期的資料格式。如果陣列的內容與格式不匹配,則函式將在發生第一個不匹配的箇所停止讀取。
format 字串可以包含 **格式說明符**,用於指定資料的哪些部分應寫入引數。每個格式說明符對應函式的一個附加引數。有關格式說明符的詳細資訊,請參閱 scanf() 參考頁。
語法
sscanf(char * source, const char * format, arg1, arg2...);
引數值
引數 | 描述 |
---|---|
source | 必需。一個用作資料來源的 char 陣列。 |
format | 必需。一個表示陣列中預期資料格式的字串。 |
arg1, arg2... | 可選。任意數量的附加引數,它們是指向可以寫入值的記憶體的指標。 |
技術詳情
返回 | 一個 int 值,表示已寫入的引數數量。如果發生錯誤,則返回常量 EOF 。 |
---|
更多示例
示例
提取字串 "1 + 2 = 3" 中的數字
int a, b, c;
char source[] = "1 + 2 = 3";
sscanf(source, "%i + %i = %i", &a, &b, &c);
printf("a = %d \n", a);
printf("b = %d \n", b);
printf("c = %d \n", c);
示例
讀取一個十六進位制數並以十進位制輸出其值
int num;
char hex[] = "FFAD01";
sscanf(hex, "%x", &num);
printf("%d", num);
示例
在使用者輸入中搜索 "x"、"y" 或 "z" 中的任意一個
char c;
char source[] = "yes";
int found = sscanf(source, "%[xyz]", &c);
if(found > 0) {
printf("Found %c", c);
} else {
printf("Character not found");
}