C语言 | 您所在的位置:网站首页 › 打印出来的顺序是乱的 › C语言 |
一、简介
在平时的使用中,会经常使用到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 实验室设备网 版权所有 |