凡事发生必将有益于我,高手,从来都不仅仅是具备某种思维的人,而是那些具备良好学习习惯的人,成为高手,无他,手熟尔! —–来自一位IT领域的大神

在最近的学习之中,对于格式化输出这个知识点,这里学一点,那里学一点,感觉学的很杂,不系统。于是,我深入的去摸索这个知识点,允许我今天写一篇博客来总结一下这一类知识点,和大家分享一下,以供大家一起学习!

.普通的格式化输出:

二.特殊的格式化输出:

(1)整数的格式化输出:

小知识:一个C程序是默认右对齐的,但是可以认为修改为左对齐,形如%-d,负号表示左对齐,打印出来的内容是向左边靠拢对齐的。%+d(加号可省略),打印出来的内容是向右边靠拢的。

直接上代码:

运行结果如下:

(2).小数的格式化以及四舍五入输出:

直接上代码:

运行结果如下:

(3).字符数组的格式化取值:

直接上代码:

运行结果如下:

三.sprintf的格式化输出:

该函数的原型为:

  • str : 这是指向一个字符数组的指针,该数组存储了 C 字符串;

  • format:是字符串嵌入的标签(用%d或%f等代表的标签);

  • argument部分,可以包含任意多个,只要format中有对应的标签表示;

  • 加const是为了防止对format对应的内容误操作;

另外要注意以下三点:

(1) 该函数包含在stdio.h的头文件中;

(2) sprintf和平时我们常用的printf函数的功能很相似。sprintf函数打印到字符串中(要注意字符串的 长度要足够容纳打印的内容,否则会出现内存溢出);

(3)printf函数打印输出到屏幕上, sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用 广泛;

直接上代码:

运行结果如下:


使用sprintf出现的内存溢出情况:

字符数组定义的时候过于小导致的异常情况

总结三类比较容易混的情况:

%m.nd:m代表输出一共占m列,不够m列前面补空格,够m列不作任何处理,n代表这个数一共要有n列,不够前面补0,够n列不做任何处理。

%m.ns:m代表这个字符串一共输出m列,n代表取这个字符串前n个元素输出到整个m列的右侧,当n=m时,不做处理

%m.nf:m代表这个数一共要输出m列,包括小数点和小数的位数,n代表小数的个数,当浮点数的小数小于n时,采用四舍五入,大于时,后面补0

第二篇博客,可能会写的不太好,勿喷。

涓滴之水终可磨损大石,不是由于它的力量强大,而是由于昼夜不舍的滴坠!!!

加油!!!

2023.01.02

From:努力学习进大厂的新青年