这里博主就不列出目录,sscanf函数的功能在代码里已有相关解释~
直接上代码:
#include<stdio.h>
#pragma warning(disable:4996) //VS特殊
//格式化字符串操作
int main()
{
//将内容打印到指针地址里去,写进
char buf[100];
sprintf(buf, "%d:%d:%d\n", 2012, 2, 1);
printf("%s\n", buf);
//同上相反,读出指针后的地址
//读出的时候str格式需要和格式化格式相同
//sscanf
int a, b, c;
sscanf("2013:10:1", "%d:%d:%d", &a, &b, &c);
printf("%d %d %d\n", a, b, c);
//sscanf跳过数据用法
//遇见空格就跳过
//%*s跳过字符串继续获取 %*d同类
char d[20];
sscanf("1234 454", "%*d %s", d);
printf("d=%s\n", d);
sscanf("1234 454", "%d %*s", d);
//sscanf读取指定宽度的数据
char e[20];
sscanf("123456789", " %5s", e);
printf("%s\n", e); //"12345"
sscanf("123456789", "%5d", e);
printf("%d\n", e); //12345
//sscanf集合操作功能1
char f[20];
//以ASCII为标准
//获取ASCII码a-z之间的字符(包括两端)(始终可以自己设置)
//遇见不是区间的或者空格直接停止
//大小写敏感
sscanf("agcd32DazjfDaff", "%[a-z]",buf);
printf("%s\n"); //"agcd"//碰见直接中止
sscanf("abd dsadqwdad", "%[a-z]", buf);
printf("%s\n"); //"abd"
sscanf("aebfdwewdadsa", "%[a-f]", buf);
printf("%s\n");//"aebfd" //因为d也在a-f之间
//sscanf的集合操作功能2
//直接取想要的东西
//匹配是
char g[20];
//指定获取'a','f','s'
sscanf("dasdafesafsdasdafas", "%[dafe]",buf);
//一旦遇见不是指定字符串其中一个就终止,空格同上
printf("%s", g); //"dafe"
//sscanf的集合操作功能3(与2互补)
//匹配非
char h[10];
//一旦遇见是指定字符串其中一个就终止,而空格却要获取
sscanf("dsdfajs0231ddsadadjisanw", "%[^wnj1]",buf);
printf("%s", h); //"dsdfa"
sscanf("dsd fajs0231ddsadadjisanw", "%[^wnj1]", buf);
printf("%s", h); //"dsd" "fa"
//sscanf的集合操作功能4(与1互补)
//就是不要指定区间的任何字符,而空格却要获取
char i[20];
sscanf("123ddfn19dsj", "%[^a-f]", i);
printf("%s", i);//"123"
sscanf("1 2 3dfn19dsj", "%[^a-f]", i);
printf("%s", i); //"1 2 3"
//Tiny Test: 使用sscanf获取#@号之间的字符串abd#deabcdff@ghi(不包括端点)
char j[20];
//这里注意一下格式问题就好,灵活搭配符号
/*
原理:
1、首先通过^ #来定位到abd, 遇见#即停止,然后j = abd,这时候就跳过了前四个字符
2、然后又开始截取,我们想的是获取#@之间的,所有利用^@直接遇见@就停止
3、如果想获取端点咋办?直接左移一位和右移就好
*/
sscanf("abd#deabcdffdasd212@ghi", "%*[^#]#%[^f]", j);
printf("%s", j); //"deabcdffdasd212"
return 0;
}
下期博主还会继续发布字符串相关函数操作方法和功能介绍,谢谢你的观看和支持!