當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C語言 sscanf()用法及代碼示例



描述

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=]

不。 參數和描述
1

*

這是一個可選的起始星號,表示數據將從流中讀取但被忽略,即它不存儲在相應的參數中。

2

width

這指定了當前讀取操作中要讀取的最大字符數。

3

modifiers

指定與 int(在 d、i 和 n 的情況下)、unsigned int(在 o、u 和 x 的情況下)或 float(在 e、f 和 g 的情況下)不同的大小,用於由相應的附加參數:h:short int(對於 d、i 和 n),或 unsigned short int(對於 o、u 和 x) l:long int(對於 d、i 和 n),或 unsigned long int(對於 o、 u and x), or double (for e, f and g) L:long double (for e, f and g)

4

type

指定要讀取的數據類型以及預期讀取方式的字符。見下表。

fscanf 類型說明符

類型 合格輸入 參數類型
c 單個字符:讀取下一個字符。如果指定的寬度不為 1,則該函數讀取寬度字符並將它們存儲在作為參數傳遞的數組的連續位置中。最後沒有附加空字符。 字符 *
d 十進製整數:數字前麵可選地帶有 + 或 - 符號 整數 *
e, E, f, g, G 浮點數:包含小數點的十進製數,可以選擇前麵是 + 或 - 符號,後麵可以是 e 或 E 字符和一個十進製數。有效條目的兩個示例是 -732.103 和 7.12e4 漂浮 *
o 八進製整數: 整數 *
s 字符串。這將讀取後續字符,直到找到空格(空格字符被視為空白、換行符和製表符)。 字符 *
u 無符號十進製整數。 無符號整數 *
x, x 十六進製整數 整數 *
  • other arguments- 此函數需要一係列指針作為附加參數,每個指針都指向格式字符串中由其對應的 %-tag 指定的類型的對象,順序相同。

    對於檢索數據的格式字符串中的每個格式說明符,應指定一個附加參數。如果要將 sscanf 操作的結果存儲在常規變量上,則應在其標識符前麵加上引用運算符,即與號 (&),例如:int n; sscanf (str,"%d",&n;);

返回值

成功時,該函數返回填充的變量數。如果在成功讀取任何數據之前輸入失敗,則返回 EOF。

示例

下麵的例子展示了 sscanf() 函數的用法。

#include <stdio.h>
#include <stdlib.h>
#include <string.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\n", month, day, year, weekday );
    
   return(0);
}

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

March 25, 1989 = Saturday

相關用法


注:本文由純淨天空篩選整理自 C library function - sscanf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。