转自http://blog.youkuaiyun.com/niushuai666/article/details/6677850
#include <iostream>
#include <cstdio>
using namespace std;
/*
sscanf,sprintf,fscanf,fprintf 系列函数的用法小结
http://blog.youkuaiyun.com/niushuai666/article/details/6677850
*/
//sscanf() - 从一个字符串中读进与指定格式相符的数据.
int main()
{
//以指定格式读入
char buf[512];
sscanf("123456", "%s", buf);
printf("%s\n", buf); //buf = "123456"
sscanf("123456 456", "%s", buf);
printf("%s\n", buf); //buf = "123456" 因为 %s读取字符串以空格或者回车结束
sscanf("123456", "%4s", buf); //读取4个字符
printf("%s\n", buf); //buf = "1234"
sscanf("123 abc", "%[^ ]", buf);//读取除了空格的字符,遇到空格结束
printf("%s\n", buf); //buf = "123"
sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);//读取数字和小写字母
printf("%s\n", buf); //buf = "123456abcdedf"
sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf); //读取除了大写字母的
printf("%s\n", buf); //buf = "123456abcdedf"
sscanf("hello, world", "%*s%s", buf);//第一个跳过
printf("%s\n", buf); //buf = "world"
//给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中
sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);
printf("%s\n", buf);
//buf = "12DDWDFF"
/*
%*[^/]/%[^@]
%*[^/] : 读取字符,遇到/停止,读取但是不存(*字符的作用)
/跳过'/'字符
%[^@] : 读取字符遇到@停止
*/
return 0;
}