C stdio sscanf() 函数

定义和用法

sscanf() 函数从字符数组中读取数据,并将其写入由参数指定的内存位置。

sscanf() 函数定义在 <stdio.h> 头文件中。

format 参数是字符串,描述了预期从文件中读取的数据格式。如果数组的内容与格式不匹配,函数将在第一个不匹配点停止读取。

格式字符串可以包含格式说明符,这些说明符指定了数据的哪些部分应该写入参数。每个格式说明符对应函数的一个额外参数。

有关格式说明符的详细信息,请参阅 scanf() 参考页面。

实例

例子 1

从字符串中提取一个数字:

char number[] = "24 hours";
int num;
sscanf(number, "%d", &num);
printf("%d", num);

例子 2

从序列 "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);

例子 3

读取一个十六进制数并输出其十进制值:

int num;
char hex[] = "FFAD01";
sscanf(hex, "%x", &num);
printf("%d", num);

例子 4

在用户输入中搜索 "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");
}

语法

sscanf(char * source, const char * format, arg1, arg2...);

参数

参数 描述
source 必需。用作数据源的字符数组。
format 必需。一个字符串,表示预期从数组中读取的数据格式。
arg1, arg2... 可选。任意数量的额外参数,它们是指向内存的指针,值可以写入这些内存位置。

技术细节

返回:

int 数,表示已写入参数的数量。

如果发生错误,则返回常量 EOF