【相关杂项】stdio.h中的sprintf函数/union的作用
1、定义int sprintf(char *str, const char *format, ...)
1、paras:*str:目标字符串首指针
*format:要写入目标字符串的数据
...:写入目标字符串数据中被转换的变量
2、对于*format的说明:
属性:%[flags][width][.precision][length]specifier
举例:3.1f 浮点型,宽度为3,保留一位小数
详见参考:C 库函数 - sprintf()
3、使用例:
float x = 3.141;
unsigned char buffer[10]
sprintf(buffer, "x= %3.1f", x);
结果:>>"x= 3.1"
2、union的作用:
惭愧没好好学C语言,只知道struct,看到union顿时陌生,不过短暂了解以后发现union在很多地方都相当常用
1、union和struct类似在于,都是不同数据类型的数据的集合,不同在于,struct中的每个成员都单独分配有存储空间,而union的成员则共享存储空间,union所占的存储空间由其中最长的成员决定,当对union的一个成员赋值时,这个空间就写入这么一个值,而原先的值就会被覆盖
2、union的应用很多,尤其对于当需要将数据拆分存储时,会用到union,例如:
union flo_to_ch
{
float f_num;
unsigned char u_num[4];
}; union flo_to_ch temperature; write_eeprom(0,temperature.u_num[0]);i2c_delay(200);i2c_delay(200);
write_eeprom(1,temperature.u_num[1]);i2c_delay(200);i2c_delay(200);
write_eeprom(2,temperature.u_num[2]);i2c_delay(200);i2c_delay(200);
write_eeprom(3,temperature.u_num[3]);i2c_delay(200);i2c_delay(200);
通过union将float型拆分成了长度为4的char型数组,节省空间的同时确保了代码的简洁
【相关杂项】stdio.h中的sprintf函数/union的作用的更多相关文章
- 走进C标准库(2)——"stdio.h"中的fopen函数
其他的库文件看起来没有什么实现层面的知识可以探究的,所以,直接来看stdio.h. 1.茶余饭后的杂谈,有趣的历史 在过去的几十年中,独立于设备的输入输出模型得到了飞速的发展,标准C从这个改善的模型中 ...
- C语言中头文件<stdio.h>中的#ifndef _STDIO_H_
先了解这里的相关知识:http://www.cnblogs.com/stemon/p/4000468.html 头文件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都in ...
- 走进C标准库(5)——"stdio.h"中的其他部分函数
函数介绍来自:http://ganquan.info/standard-c/ 函数名: freopen 功 能: 替换一个流 用 法: FILE *freopen(char *filename, ...
- 走进C标准库(3)——"stdio.h"中的getc和ungetc
接前文. 再来看看getc和ungetc的实现.在看这两个函数的实现之前,我们先来想一想这两个函数分别需要做的工作. int getc(FILE *stream) 说明:函数getc从stream指向 ...
- C++中对sprintf()函数的说明(转)
在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望.由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出 ...
- 走进C标准库(4)——"stdio.h"中的putc
花了点时间把园子弄得好看了点,现在继续. 函数名: putc 功 能: 输出一字符到指定流中 用 法: int putc(int ch, FILE *stream); #define _putc_ ...
- C语言string.h中常用字符函数介绍
原文:http://www.cnblogs.com/xuwenmin888/archive/2013/05/03/3057883.html strcpy 函数名: strcpy 功 能: 拷贝一个字符 ...
- C语言中math.h中常用的函数
1.绝对值 ①函数原型: int abs(int x); 函数功能: 求整数x的绝对值 int number=-1234; abs(number); ②函数原型:double fabs(double ...
- math。h中的log函数的应用
以10为底的log函数: 形式为 double log10(double x) 以e为底的log函数(即 ln)double log (double x) 如何表达log 以a为底b的对数: 用换 ...
- makefile中的patsubst函数有何作用?
答:这是个模式替换函数,格式为: $(patsubst <pattern>,<replacement>,<text>) 查找text中的单词,如果匹配pattern ...
随机推荐
- C# 读取串口设备列表
ManagementObjectSearcher 解析不到头文件,需要手动 Add Referance 需要添加引用:System.Management,然后引入命名空间:using System.M ...
- Java-获取真实用户ip
1 import common.util.StringUtil; 2 import org.springframework.web.bind.annotation.ModelAttribute; 3 ...
- About TopoJSON
An extension of GeoJSON that encodes topology! TopoJSON https://github.com/topojson/topojson The To ...
- 最近录了一些python视频教程
最近录了一些python视频教程,目前有机器学习的.python基础知识的,大家可以去B站观看. https://space.bilibili.com/431152063 python机器学习之KNN ...
- go 的internal 目录
Go 语言中的软件包推荐按照:组织名/项目名 的形式安排软件包的文件目录结构,一般「项目名」文件目录下还会按照功能.抽象约定.具体实现等维度再划分一些子目录.在 Go 语言里包的导入路径不同则被判定为 ...
- 杂:python获取所有盘符简单粗暴版
def _test_p_get_all_driver(): l = [] for i in range(97, 123): d = chr(i) + ':\\' ...
- Install MySQL wsl1
To install MySQL on WSL (ie. Ubuntu) env Ubuntu 22.04.1 LTS mysql Ver 8.0.32-0ubuntu0.22.04.2 for Li ...
- Mybatis二级缓存(2)
10.3.一级缓存的原理 10.3.3 一级缓存的测试
- nxp imx8m与imx6 使用VPU时,申请CMA的区别
imx8mp是什么时候申请CM的: imx8mp是我自己看的,imx6不一定保熟. imx8mp: imx6:
- for in | for in 比较 解释 | 以后找知识点先从这里面搜索
const obj = { a: 1, b: 2, c: 3 } for (let i in obj) { console.log(i) // a // b // c } for (let i of ...