关于C语言中字符串格式化sprintf()函数和sscanf函数()的功能介绍和相关练习

这里博主就不列出目录,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;
}

 下期博主还会继续发布字符串相关函数操作方法和功能介绍,谢谢你的观看和支持!

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值