C语言中sscanf()函数相关用法

1、前言

 C库函数sscanf()和scanf()函数类似,前者用于从字符串中读取格式化输入,后者则是从键盘(stdin)中格式化输入,该函数的声明如下所示:

#include <stdio.h>

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

参数说明:

  • str:C语言中的字符串,该字符串作为函数检索数据的来源;
  • format:C中的字符串,包含以下各项的一个或者多个:空格字符、非空格字符和format说明符;

对于format说明符的形式为[=%[*][width][modifiers][type=],format说明符讲解如下:

*:这是一个可选的星号,表示数据是从流stream中读取的,但是可以被忽视,它不存储在对应的参数中;

width:指定在当前中读取操作中的最大字符数;

modifiers:为对应的附加参数所指向的数据指定一个不同于整型(针对 d、i 和 n)、无符号整型(针对 o、u 和 x)或浮点型(针对 e、f 和 g)的大小: h :短整型(针对 d、i 和 n),或无符号短整型(针对 o、u 和 x) l :长整型(针对 d、i 和 n),或无符号长整型(针对 o、u 和 x),或双精度型(针对 e、f 和 g) L :长双精度型(针对 e、f 和 g);

type:一个字符,指定了要被读取的数据类型以及数据读取方式。

对于type类型说明符,详情如下:

c:单个字符,读取下一个字符,如果指定了一个不为1的width,函数会读取width个字符,并通过参数传递,将它们存储在数组中的连续位置,对应的参数类型为char *;

d:十进制数,数字前面的+或-号是可选的,对应的参数类型为int *;

e,E,f,g,G:浮点数,包含了一个小数点、一个可选的前置符号+或-、一个可选的后置字符e或E以及一个十进制数,对应的参数类型为float *;

o:八进制整数,对应的数据类型为int *;

s:字符串,函数将连续读取字符,直到遇到空格字符,对应参数类型为char *;

u:无符号的十进制数,对应参数类型为unsigned int *;

x,X:十六进制整数,对应参数类型为int *。

  •  附加参数:该函数接受一系列的指针作为附加参数,每一个指针都指向一个对象,对象的类型由format字符串相应的%标签指定,参数与%标签的顺序相同。

2、sscanf()用法实例

3、小结

猜你喜欢

转载自www.cnblogs.com/Cqlismy/p/12113180.html