sprintf函数的详解及sprint与printf结合使用 —————— 开开开山怪

1> 头文件

   sprintf()函数的头文件是 stdio.h

2>应用格式

   int sprintf(char *str, char *format, [content1,content2.....]);

返回值: 函数返回字符串str的长度

char one[80] = {"nihao"};
char two[80] = {"hellow world"};
int temp = 0;

temp =  sprintf(one, "%s", two);
printf("temp = %d", temp);

在这里插入图片描述

3> 参数解析

1> char *strstr是目标字符串,是将format字符串最终的内容赋值给str形成一个新的字符串
2> char *formatformat字符串是将content的内容凭借format的内容进行格式化并形成format字符串
3> content可以是常量,也可以是变量

4> 正确应用示例

例1.

char one[80] = {"nihao"};
char two[80] = {"hellow world"};
 
sprintf(one, "%s%s", one, two);

此时"%s%s" 将one two进行格式化形成字符串 “nihaohellow world”;
再将形成的字符串的内容赋值给one,此时one形成一个新的字符串"nihaohellow world"
而不再是之前的"nihao";

例2.

char one[80] = {"nihao"};
char two[80] = {"hellow world"};

sprintf(one, "%%s");

此时"%%s"并不是格式符,所以content的内容可以不存在,也不需要将内容格式化形成字符串
此时的"%%s" 赋值给one one的结果是"%s" “%%s"这样的写法是避免二义性,真正的字符串内容为”%s"

例3.

char one[80] = {"nihao"};
char two[80] = {"hellow world"};

sprintf(one, "%%%ds", 5);

此时的5应被%d格式化,相当于替代了%d的位置
此时的"%%%ds" 通过将5对应格式化之后 变为"%%5s" 同样也是避免二义性 one的结果为"%5s"

例4.

char one[80] = {"nihao"};
char two[80] = {"hellow world"};
	
sprintf(one, "%%%ds", 5);
printf(one, "1");

此时的printf(one, “1”) 相当于是printf("%5s", “1”),
以%5s输出,不够5个字符,输出左边用空格补齐
最终的printf的结果显示就是

在这里插入图片描述
例5.

 char one[80] = {"nihao"};
char two[80] = {"hellow world"};

sprintf(one, "%s\n", two);
printf("%s",one);

此时的"%s\n"将two格式化形成字符串"hellow world\n",然后one的内容就被赋值为"hellow world\n"
此时的printf("%s", one) 相当于是printf("%s", “hellow world\n”);
以%s形式输出,自然在屏幕上输出的结果就是
在这里插入图片描述
会有一个回车显示是因为此时\n 就是字符回车 。

5>错误示例

char *one;
char *two;
        
sprintf(one, "%%s");

此时是错误的,one应该是一个具有一定明确空间的字符串数组名

6>温馨提示

  1. 其实sprintf( , , )相当于从右往左依次赋值的过程
  2. 函数中的第一个参数 必须是一个已经有一定空间的的字符串数组名
  3. 这些内容的总结是本人在学习过程中自己理解的,并且通过上机验证过的,如有不足之处还望各位大侠提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值