C 标准输入输出库 sscanf() 函数
示例
从字符串中提取数字
char number[] = "24 hours";
int num;
sscanf(number, "%d", &num);
printf("%d", num);
定义和用法
The sscanf()
函数从 char
数组中读取数据并将其写入由参数指定的内存位置。
The sscanf()
函数在 <stdio.h>
头文件中定义。
format 参数是一个字符串,用于描述从文件中期望的数据格式。如果数组的内容与格式不匹配,则函数会在第一次不匹配的地方停止读取。
format 字符串可以包含 **格式说明符**,这些说明符指定数据的哪些部分应该写入参数。每个格式说明符对应于函数的一个附加参数。有关格式说明符的详细信息,请参阅 scanf() 参考页面。
语法
sscanf(char * source, const char * format, arg1, arg2...);
参数值
参数 | 描述 |
---|---|
source | 必需。用作数据源的 char 数组。 |
format | 必需。表示从数组中期望的数据格式的字符串。 |
arg1, arg2... | 可选。任意数量的附加参数,它们是指向可以写入值的内存的指针。 |
技术细节
返回值 | 一个 int 值,表示写入的参数数量。如果发生错误,它将返回常量 EOF 。 |
---|
更多示例
示例
提取数字序列 "1 + 2 = 3"
int a, b, c;
char source[] = "1 + 2 = 3";
sscanf(source, "%i + %i = %i", &a, &b, &c);
printf("a = %d \n", a);
printf("b = %d \n", b);
printf("c = %d \n", c);
示例
读取十六进制数字并输出其十进制值
int num;
char hex[] = "FFAD01";
sscanf(hex, "%x", &num);
printf("%d", num);
示例
在用户输入中搜索 "x"、"y" 或 "z"
char c;
char source[] = "yes";
int found = sscanf(source, "%[xyz]", &c);
if(found > 0) {
printf("Found %c", c);
} else {
printf("Character not found");
}