(%3d)数据格式在scanf和printf中的常规应用,你真的理解透了吗?

您所在的位置:网站首页 double在c语言中的意思lf (%3d)数据格式在scanf和printf中的常规应用,你真的理解透了吗?

(%3d)数据格式在scanf和printf中的常规应用,你真的理解透了吗?

2023-07-17 05:15| 来源: 网络整理| 查看: 265

前言: 对于scanf、printf中数据格式常使用的是单个,即%d、%s、%c等 但也有着像%3d等的数据格式 虽然没有在代码中常运用 ,但也得知道分别是怎么实现的

文章目录 (一)数据格式在scanf中的应用(二)数据格式在printf中的应用

(一)数据格式在scanf中的应用

下面用 %3d 举例 如

#include int main() { int n; scanf("%3d", &n); printf("n=%d\n",n); return 0; }

运行代码,从键盘输入值 1) 比给定的数据格式小或相等 如输入 12 ,输出到屏幕上为 n=12 ; 如输入 123,输出到屏幕上为 n=123; 就是说, 在scanf中,当输入的数据长度比给定的数据格式小或者相等时时,常规存取值到指定的地址处。

2) 比给定的数据格式大 如输入 12345, 输出到屏幕上为 n =123。 就是说,在scanf中,当输入的数据长度比给定的数据格式大时scanf函数会截取值存入指定的地址处。

总的来说

"%(数字)d"(或者其他转换字符)此数字在scanf中表示 最大字段宽度 。意思为,你不能输入字段比此数字还大的。即输入到达最大字段宽度时,超过宽度后面的将不再作为输入内容(相当于作废),在最大宽度内的为输入内容。

(二)数据格式在printf中的应用

还是用%3d来举例说明。 如

#include int main() { int n = 12345; char arr[] = { "Hello" }; printf("%d\n", n); printf("%s\n", arr); return 0; }

这里创建了一个整形变量n和一个字符数组arr。 1)数据格式小于变量长度 如printf直接用 %3d 打印 n ,输出为 12345 。 如printf直接用 %3s 打印数组 arr,输出为 Hello 。 就是说,在printf中,当变量长度比数据格式大时,printf与用"%d"数据格式输入完全相同,即原样输出。

2)数据格式大于变量长度 如printf用 %8d 打印 n ,输出为 (!)(!)(!)12345 。 如printf用 %-8d 打印 n ,输出为 12345(!)(!)(!) 。 如printf用 %8s 打印 arr ,输出为 (!)(!)(!)Hello 如printf用 %-8s 打印 arr ,输出为 Hello(!)(!)(!)

注:在本文中(!)表示空格的意思。 即第一条案例表示输出 3个空格+数字12345;第二条案例表示输出 数字12345+3个空格。 第三条案例表示输出 3个空格+字符Hello; 第四条案例表述输出 字符Hello+3个空格。

就是说,在printf中, 当变量长度比数据格式小时, printf打印完变量后用空格填充直到 数据格式达到所要求值。 注: 此方式常用来做数据的对齐用,对于数据的左对齐和友对齐有很大的帮助!

总的来说

"%(数字)d"(或者其他转换字符),此数字在printf中表示 最小字段宽度。意思为你输出的字段宽度最小为此数字,不够将用空格给填充到最小字段宽度。即当你输出的字段比最小字段宽度大时,原样输出,小时,将填充空格直到符合最小字段宽度。(可以理解成最终输出的只可以>=最小字段宽度)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3