C stdio sscanf() 函数
示例
从字符串中提取数字
char number[] = "24 hours";
int num;
sscanf(number, "%d", num);
printf("%d", num);
定义和用法
sscanf()
函数从一个 char
数组中读取数据,并将其写入由参数指定的内存位置。
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");
}