位置:首頁 > 高級語言 > C語言標準庫 > sscanf() - C語言庫函數

sscanf() - C語言庫函數

C庫函數 int sscanf(const char *str, const char *format, ...) 讀取輸入一個字符串格式化。

聲明

以下是sscanf() 函數的聲明。

int sscanf(const char *str, const char *format, ...)

參數

  • str -- 這是C字符串函數流程作為其源中檢索數據。

  • format --這是C字符串,其中包含一個或多個以下項目:空白字符,非空白字符和格式說明符

    格式規範遵循這個原型: [=%[*][width][modifiers]type=]

參數 描述
* 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 合格輸入 參數類型
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 --  預計此功能作為額外的參數的指針指向對象的類型由它們相應的%標記指定的格式字符串內,以相同的順序,每一個序列。

    對於每一個檢索數據的格式字符串格式說明,一個額外的參數應符合規定。如果要存儲一個你應該先於它的標識符引用操作的常規變量上一個sscanf的操作結果,即一個符號符號(&),像:int n; sscanf (str,"%d",&n);

返回值

如果成功,函數返回充滿變量的數量。在故障之前可以成功地讀取任何數據輸入的情況下,返回EOF。

例子

下麵的例子演示了如何使用 sscanf() 函數。

#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);
}

讓我們編譯和運行上麵的程序,這將產生以下結果:

March 25, 1989 = Saturday