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

本文详细解析了sprintf函数的使用方法,包括其头文件、应用格式、返回值及参数解析。通过多个示例说明如何正确使用sprintf进行字符串格式化,以及常见错误和注意事项。

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. 这些内容的总结是本人在学习过程中自己理解的,并且通过上机验证过的,如有不足之处还望各位大侠提出。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 MPU6050是由InvenSense公司研发的六轴惯性测量单元(IMU),该设备融合了三轴陀螺仪和三轴加速度计。它能够即时检测设备在三维空间中的运动参数,例如角速度和加速度等指标。DMP(Digital Motion Processing)是MPU6050内部集成的一种硬件加速技术,它能够对传感器数据进行处理并实现姿态计算,从而降低主控制器如STM32的计算压力。 STM32是一款基于ARM Cortex-M架构的微控制器,该器件在嵌入式系统领域得到了广泛部署,其特点是处理性能高且能耗低,非常适合用于处理复杂的传感器数据和控制任务。在MPU6050的姿态计算应用场景中,STM32通常负责MPU6050进行通信、获取传感器数据,并基于DMP提供的结果进行后续的数据处理和应用。 在"MPU6050姿态计算STM32源代码(DMP)"这一项目中,研究者已经完成了将MPU6050的六轴数据通过DMP进行加工,并利用STM32进行读取和解析这些数据的工作。源代码可能涵盖以下几个核心组成部分: 1. **配置初始化**:初始化STM32的GPIO、I2C接口,目的是为了MPU6050建立有效的通信连接。此外,还需要对MPU6050的寄存器进行设置,激活DMP功能,并设定采样频率和滤波器参数。 2. **数据交换**:利用STM32的I2C接口周期性地从MPU6050获取DMP的输出结果,这些数据通常涵盖设备的角速度、加速度以及姿态角(包括俯仰角、翻滚角和偏航角等)。 3. **姿态计算**:尽管DMP已经对原始数据进行了基础处理,但在STM32端可能还需要进行二次处理,例如采用卡尔...
源码链接: https://pan.quark.cn/s/8f33d1350bc1 在电子工程领域中,选择理解芯片扮演着关键角色。当我们面对陌生的芯片时,检索相关文献是获取必要信息的主要途径。以下是一些推荐的芯片资料检索平台,它们能够协助工程师们迅速获取所需数据,从而提升设计工作的效率。 1. **329 万 PDF 集成芯片资料下载**(http://www.sylxb.cn/PDF/pdfsearch.html):该网站汇集了众多PDF格式的芯片数据手册,支持用户在线查阅或下载,是搜集芯片规格和参数的优选资源。 2. **Datasheet search 集成电路速查网**:作为一个专门的集成电路检索平台,该网站通过关键词搜索可迅速定位芯片的技术参数和应用指南。 3. **21icsearch 芯片查询网**(http://www.21icsearch.com):21icsearch 是中国领先的电子技术网站,其丰富的芯片数据库不仅包含详尽的芯片资料,还设有相关论坛和社区供工程师们交流探讨。 4. **datasheetpdf 芯片查询网**:此网站专注于提供PDF格式的芯片数据手册,便于用户快速获取和查阅芯片的详细规格。 5. **IC112 芯片查询网**:IC112 提供了大量的芯片资料,涵盖引脚布局、功能说明、电气特性等,对于设计人员而言极具实用价值。 6. **中国电子市场网**(www.dzsc.com):除了芯片资料查询功能,该网站还支持在线购买和交易,是电子元件采购的重要渠道。 7. **中国最大的芯片交易网**(www.ic72.com):该网站不仅提供芯片查询服务,还实时更新市场价格动态,对于关注市场变化的设计师具有重要参考意义。 ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值