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"。

你可能感兴趣的:(printf)