当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。