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

  • 相关阅读:
    Python接口自动化核心模块 数据库操作和日志
    基于数据驱动的接口自动化框架封装
    还在担心漏测吗?快来使用jacoco统计下代码覆盖率
    Mybatisplus 分页查询,总数是如何统计的
    C++ 运算符重载
    C++ 关键字 const
    C++ 拷贝构造
    C++ 之模板
    C++ 引用
    C++ 多态
  • 原文地址:https://www.cnblogs.com/ZYQS/p/15115224.html
Copyright © 2020-2023  润新知