【相关杂项】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型数组,节省空间的同时确保了代码的简洁

posted @ 2021-08-08 16:18  骤雨重山  阅读(107)  评论(0编辑  收藏  举报