C语言中的sscanf()函数使用详解
简介
sscanf()
是 C 语言中用于格式化输入的函数,它可以解析字符串,将指定格式的数据转换成相应的类型,并存储到对应的变量中。 sscanf()
函数工作方式类似于 scanf()
函数,唯一的区别是前者从指定字符串中读取参数,而后者则是从标准输入中读取参数。
函数原型
函数原型如下:
int sscanf(const char *str, const char *format, ...);
str
参数表示要解析的字符串,format
参数指定字符串解析的格式。剩余的参数表示解析出来的数据将会存储在哪些变量中,变量存储的顺序与格式字符串中变量的顺序相同。
格式字符串
format
参数是一个格式控制字符串,它指定了被解析字符串的格式。格式字符串中的空格、制表符和换行符与被解析字符串中的相应字符是匹配的,其他字符表示要匹配字符串中相应的字符而不是空格、制表符或者换行符。格式字符串中还包含了一些格式控制字符来和要读取的数据类型匹配,例如:
%d
: 匹配有符号十进制整数。%u
: 匹配无符号十进制整数。%f
: 匹配十进制浮点数,可以含小数点。%c
: 匹配单个字符。%s
: 匹配字符串(直到遇到空格或其他分隔符)。
除了上述格式控制字符之外,格式字符串还可以包含一些可选项,例如:
*
: 不进行数据存储,但仍会解析字符。%<num>
: 最大输入字符数目,num 表示字符数目。%<width>.<precision>f
: 匹配指定精度的浮点数,width 表示最小字段宽度,precision 表示小数点后的位数。
示例一
假设我们有一个字符串如下:
char str[] = "Name: John, Age: 30, Score: 90.5";
现在我们想从字符串中解析出名字、年龄和分数,并存储到对应的变量中。
char name[20];
int age;
float score;
sscanf(str, "Name: %s, Age: %d, Score: %f", name, &age, &score);
解析的过程中,sscanf()
函数会忽略字符串 "Name:"
、逗号等符号,只解析出 John
,然后存储到 name
数组中。接着,它会解析整数 30
并存储到 age
变量中。最后,它会解析浮点数 90.5
并存储到 score
变量中。
示例二
假设解析一个十进制数字符串,例如字符串 "12345"
,我们可以使用 %d
格式控制字符解析出该字符串所代表的整数。
char str[] = "12345";
int num;
sscanf(str, "%d", &num);
需要注意的是,这里的字符串只包含数字字符,而 %d
匹配的是一个十进制整数,因此 sscanf()
函数会将字符串 "12345"
解析成数值 12345
,并将其存储到 num
变量中。
总结
本文介绍了 C 语言中的 sscanf()
函数,包括 sscanf()
函数的定义、格式字符串的用法以及两个示例。 sscanf()
函数是一个非常灵活的函数,适用于解析各种格式的字符串。因此,我们可以在许多实际的应用场景中使用它。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言中的sscanf()函数使用详解 - Python技术站