C语言 您所在的位置:网站首页 打印出来的顺序是乱的 C语言

C语言

2023-06-16 18:26| 来源: 网络整理| 查看: 265

一、简介

        在平时的使用中,会经常使用到printf进行打印,而最长使用的方式是printf("%s",string)进行打印。但是有个问题,如果string结尾不是0。那么printf会继续打印,直到遇到0为止。这样就会有内存溢出的风险。显然,这种是不符合预期的。所以,此时就需要%*s出来帮忙了。

二、功能介绍         printf("%s",string)

        打印字符串,遇到0停止。

        printf("%*s",10,string)或printf("%10s",string)

        打印字符串,至少占用10个字节。如果不够,则在左侧补0,如果超过10个,则按实际长度。

        printf("%.*s",10,string)或printf("%.10s",string)

        打印字符串,最多占10个字节。如果不够,则按实际长度,如果超过10个,则只打印10个。

        

        printf("%-*s",10,string)或printf("%-10s",string)

        打印字符串,至少占用10个字节,如果不够,则在右侧补0,如果超过10个,则按实际长度。

        注:%-s只是改变了对齐的方向。正常是右对齐,加上“-”后,为左对齐。

三、实例

        见如下代码,这里我们分别以%*s、%.*s和%-*s三种方式进行打印。

char *string1 = "this is a test string"; uint8_t len = strlen(string1); printf("len:%d,%s\r\n",len,string1); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\r\n"); printf("%15s|\r\n%*s|\r\n%-30s|\r\n",string1,30,string1,string1); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\r\n"); printf("%.15s|\r\n%.*s|\r\n%-.30s|\r\n",string1,30,string1,string1); printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\r\n");

        看结果:

        

         可以看到,要打印的字符串长度为21字节。%*s打印,如果要打印的长度大于设置的长度,则打印实际长度。而%.*s打印,如果要打印的长度大于设置的长度,则只打印设置的长度。而%-*s只是将右对齐改变成了左对齐。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有