C庫函數(shù) int sscanf(const char *str, const char *format, ...) 讀取輸入一個字符串格式化。
以下是sscanf() 函數(shù)的聲明。
int sscanf(const char *str, const char *format, ...)
str -- 這是C字符串函數(shù)流程作為其源中檢索數(shù)據(jù)。
format --這是C字符串,其中包含一個或多個以下項目:空白字符,非空白字符和格式說明符
格式規(guī)范遵循這個原型: [=%[*][width][modifiers]type=]
參數(shù) | 描述 |
---|---|
* | This is an optional starting asterisk indicates that the data is to be read from the stream but ignored, i.e. it is not stored in the corresponding argument. |
width | This specifies the maximum number of characters to be read in the current reading operation |
modifiers | Specifies a size different from int (in the case of d, i and n), unsigned int (in the case of o, u and x) or float (in the case of e, f and g) for the data yiibaied by the corresponding additional argument: h : short int (for d, i and n), or unsigned short int (for o, u and x) l : long int (for d, i and n), or unsigned long int (for o, u and x), or double (for e, f and g) L : long double (for e, f and g) |
type | A character specifying the type of data to be read and how it is expected to be read. See next table. |
fscanf類型說明:
type | 合格輸入 | 參數(shù)類型 |
---|---|---|
c | Single character: Reads the next character. If a width different from 1 is specified, the function reads width characters and stores them in the successive locations of the array passed as argument. No null character is appended at the end. | char * |
d | Decimal integer: Number optionally preceeded with a + or - sign | int * |
e,E,f,g,G | Floating yiibai: Decimal number containing a decimal yiibai, optionally preceeded by a + or - sign and optionally folowed by the e or E character and a decimal number. Two examples of valid entries are -732.103 and 7.12e4 | float * |
o | OctalInteger: | int * |
s | String of characters. This will read subsequent characters until a whitespace is found (whitespace characters are considered to be blank, newline and tab). | char * |
u | Unsigned decimal integer. | unsigned int * |
x,X | Hexadecimal Integer | int * |
other arguments -- 預(yù)計此功能作為額外的參數(shù)的指針指向?qū)ο蟮念愋陀伤鼈兿鄳?yīng)的%標(biāo)記指定的格式字符串內(nèi),以相同的順序,每一個序列。
對于每一個檢索數(shù)據(jù)的格式字符串格式說明,一個額外的參數(shù)應(yīng)符合規(guī)定。如果要存儲一個你應(yīng)該先于它的標(biāo)識符引用操作的常規(guī)變量上一個sscanf的操作結(jié)果,即一個符號符號(&),像:int n; sscanf (str,"%d",&n);
如果成功,函數(shù)返回充滿變量的數(shù)量。在故障之前可以成功地讀取任何數(shù)據(jù)輸入的情況下,返回EOF。
下面的例子演示了如何使用 sscanf() 函數(shù)。
#include <stdio.h> #include <stdlib.h> int main() { int day, year; char weekday[20], month[20], dtm[100]; strcpy( dtm, "Saturday March 25 1989" ); sscanf( dtm, "%s %s %d %d", weekday, month, &day, &year ); printf("%s %d, %d = %s ", month, day, year, weekday ); return(0); }
讓我們編譯和運(yùn)行上面的程序,這將產(chǎn)生以下結(jié)果:
March 25, 1989 = Saturday