描述

C 库函数 int sscanf(const char *str, const char *format, ...) 从字符串读取格式化输入。

声明

下面是 sscanf() 函数的声明。

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

参数

  • str-- 这是 C 字符串,是函数检索数据的源。
  • format-- 这是 C 字符串,包含了以下各项中的一个或多个:空格字符、非空格字符format 说明符
    format 说明符形式为[=%[*][width][modifiers]type=],具体讲解如下:

实例

下面的实例演示了 sscanf() 函数的用法。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int day, year;
char weekday[20], month[20], dtm[100];

strcpy( dtm, "Saturday March 25 1989" );
sscanf( dtm, "%s %s %d %d", weekday, month, &day, &year );

printf("%s %d, %d = %s\n", month, day, year, weekday );

return(0);
}

让我们编译并运行上面的程序,这将产生以下结果:

March 25, 1989 = Saturday
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
char buf[512];
sscanf("123456","%s",buf);
printf("%s\n",buf);
//输出123456

//取指定长度的zifuchuan 如下 去最大长度为4字节的字符串
sscanf("123456","%4s",buf);
printf("%s\n",buf);
//输出1234

//遇到指定字符为止的字符串 如在下例取遇到空格为止字符串
sscanf("123456 abcde","%[^ ]",buf);
printf("%s\n",buf);
//输出结果为 123456 遇到空格结束
sscanf("123456 abcd","%[^4]",buf);
printf("%s\n",buf);
//输出结果为123 遇到4结束

//跳过此数据不读入
sscanf("123456abcd","%*d%s",buf);
printf("%s\n",buf);
//输出结果为 abcd 跳过了整形

//取到指定字符集为止的字符串
sscanf("123456abcde","%[^a-z]",buf);
printf("%s\n",buf);
//输出结果为123456 遇到a小写字母停止读入

sscanf("123456abcdDAD$^&&*","%[1-9a-z]",buf);
printf("%s\n",buf);
//输出结果为123456abcdc 只读指定字符

return 0;
}