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

  • 相关阅读:
    如何删除完全重复的列
    串联多个字符串,引发string和stringBuilder的比较
    借鉴ANJOU的方法改写了上次的TreeView
    如何改变ListBox中内容的顺序
    执行Insert语句时使用string的Format用法
    moss 2007 中FCKEditor编辑器的使用
    qt 获得cmd 命令运行的结果 GIS
    迭代器 GIS
    win32 创建带图片的button GIS
    c++标准库的构成 GIS
  • 原文地址:https://www.cnblogs.com/ZYQS/p/15115224.html
Copyright © 2011-2022 走看看