C 库函数 - sscanf()
原创
©著作权归作者所有:来自51CTO博客作者寰宇CC的原创作品,请联系作者获取转载授权,否则将追究法律责任
描述
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;
}