zoukankan      html  css  js  c++  java
  • sprintf实例

    例子1:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main (int argc, char *argv[])
    {
        /* -------------------------------------- */
        char buf[30] = {0};
        sprintf(buf, "%8X" , 123);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%8X" , 100);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%8X" , 84);
        printf("%s\n", buf);
    
        /* -------------------------------------- */
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%8x" , 123);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%8x" , 100);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%8x" , 84);
        printf("%s\n", buf);

      /* -------------------------------------- */
       
      memset(buf,
    0, sizeof(buf));
       
      sprintf(buf,
    "%-8x" , 123);
       
      printf(
    "%s\n", buf);


      memset(buf,
    0, sizeof(buf));
       
      sprintf(buf,
    "%-8x" , 100);
       
      printf(
    "%s\n", buf);



      memset(buf,
    0, sizeof(buf));
       
      sprintf(buf,
    "%-8x" , 84);
       
      printf(
    "%s\n", buf);
    return 0; }

    程序输出:

    [root@localhost ~]# ./a.out
          7B
          64
          54
          7b
          64
          54
    7b
    64
    54
    [root@localhost ~]#

    (1)%X表示大写16进制,%x表示小写16进制;

    (2)%8X表示“右对齐”,即串总共占8位,不足补空格;

    (2)%-8X表示“左对齐”,即串总共占8位,不足补空格;

    例子2:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main (int argc, char *argv[])
    {
        char buf[30];
    
        /* -------------------------------------- */
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%4x" , 123123);
        printf("%s\n", buf);  // 原样输出
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%4x" , 10000);
        printf("%s\n", buf);  // 原样输出
    
        /* -------------------------------------- */
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%-4x" , 123123);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%-4x" , 10000);
        printf("%s\n", buf);
    
        return 0;
    }

    程序输出:

    [root@localhost ~]# ./a.out
    1e0f3
    2710
    1e0f3
    2710
    [root@localhost ~]#

    (1)当串的宽度超过或等于,格式说明符所指定的宽度时,格式说明符不起作用,串原样输出。

    例子3:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main (int argc, char *argv[])
    {
        char buf[30];
    
        /* -------------------------------------- */
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%08x" , 123123);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%08x" , 10000);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%08x" , 84);
        printf("%s\n", buf);
    
        /* -------------------------------------- */
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%@8x" , 123123);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%@8x" , 10000);
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%@8x" , 84);
        printf("%s\n", buf);
    
        return 0;
    }

    程序输出:

    [root@localhost ~]# ./a.out
    0001e0f3
    00002710
    00000054
    %@8x
    %@8x
    %@8x
    [root@localhost ~]#

    (1)这里将左边补0,如果补其他的就不行了。

    例子4:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main (int argc, char *argv[])
    {
        char buf[30];
    
        /* -------------------------------------- */
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%5.3s" , "ZhuHaiXiangZhou");
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%8.8s" , "ZhuHaiXiangZhou");
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%3.8s" , "ZhuHaiXiangZhou");  // 当小数部分大于整数部分的时候,忽略整数部分
        printf("%s\n", buf);
    
        /* -------------------------------------- */
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%.5s" , "ZhuHaiXiangZhou");
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%.3s" , "ZhuHaiXiangZhou");
        printf("%s\n", buf);
    
        memset(buf, 0, sizeof(buf));
        sprintf(buf, "%.7s" , "ZhuHaiXiangZhou");
        printf("%s\n", buf);
    
        return 0;
    }

    程序输出:

    [root@localhost ~]# ./a.out
      Zhu
    ZhuHaiXi
    ZhuHaiXi
    ZhuHa
    Zhu
    ZhuHaiX
    [root@localhost ~]#

    (1)在”%m.ns”中,m表示占用宽度(字符串长度不足时补空格,
    超出了则按照实际宽度打印),n才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m
    没什么大用,还是点号后面的n用的多。 当小数部分大于整数部分的时候,忽略整数部分,如这里的"%3.8s"。

  • 相关阅读:
    最适合人工智能开发的5种编程语言优缺点对比
    最适合人工智能开发的5种编程语言优缺点对比
    Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求
    Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求
    Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求
    Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求
    Docker学习之搭建MySql容器服务
    Docker学习之搭建MySql容器服务
    Docker学习之搭建MySql容器服务
    C#中的interface没那么简单
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3065835.html
Copyright © 2011-2022 走看看