C语言之printf( )详解

Posted 猛男Banana君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言之printf( )详解相关的知识,希望对你有一定的参考价值。

一、基本概念

1、定义:

printf() 是 C 语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。使用 printf() 时 要加头文件 stdio.h。

2、函数原型:

int printf ( const char * format, ... );

3、返回值:

正确返回输出的字符总数,错误返回负值。与此同时,输入输出流错误标志将被置值,可由指示器函数 ferror(FILE *stream) 来检查输入输出流的错误标志,如果 ferror() 返回一个非零值,表示出错。

4、调用格式:

printf("格式化字符串", 输出表列)

5、格式化字符串包含三种对象,分别为:

1)字符串常量;
2)格式控制字符串;
3)转义字符。

字符串常量原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式控制字符串和各输出项在数量和类型上应该一一对应。其中格式控制字符串是以 % 开头的字符串,在 % 后面跟有各种格式控制符,以说明输出数据的类型、宽度、精度等。

二、格式控制字符串

1、printf() 的格式控制字符串组成如下:

%[flags][width][.prec][length]type

分别为:

%[标志][最小宽度][.精度][类型长度]类型。

2、类型(type)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、标志
flags 规定输出样式,取值和含义如下:
在这里插入图片描述

type是a、A、e、E、f、g、G时,一定使用小数点。默认的,如果使用.0控制不输出小数部分,则不输出小数点。

type是g、G时,尾部的0保留。数字零将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”)。

示例:

printf("%5d\\n",1000);     //默认右对齐,左边补空格
printf("%-5d\\n",1000);     //左对齐,右边补空格

printf("%+d %+d\\n",1000,-1000);  //输出正负号

printf("% d % d\\n",1000,-1000);  //正号用空格替代,负号输出

printf("%x %#x\\n",1000,1000);  //输出0x

printf("%.0f %#.0f\\n",1000.0,1000.0)//当小数点后不输出值时依然输出小数点

printf("%g %#g\\n",1000.0,1000.0); //保留小数点后后的0

printf("%05d\\n",1000);    //前面补0

输出结果为:

在这里插入图片描述

4、最小宽度

用十进制整数来表示输出的最少位数。若实际位数多于指定的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。width的可能取值如下:
在这里插入图片描述

5、精度
精度格式符以“.”开头,后跟十进制整数。可取值如下:
在这里插入图片描述
1)对于整型(d,i,o,u,x,X),precision表示输出的最小的数字个数,不足补前导零,超过不截断。
2)对于浮点型(a, A, e, E, f ),precision表示小数点后数值位数,默认为六位,不足补后置0,超过则截断。
3)对于类型说明符g或G,表示可输出的最大有效数字。
4)对于字符串(s),precision表示最大可输出字符数,不足正常输出,超过则截断。
precision不显示指定,则默认为0。以星号代替数值,类似于width中的*,在输出参数列表中指定精度。

示例:

printf("%.8d\\n",1000);   //不足指定宽度补前导0,效果等同于%08d
printf("%.8f\\n",1000.123456789);//超过精度,截断
printf("%.8f\\n",1000.123456); //不足精度,补后置0
printf("%.8g\\n",1000.123456); //最大有效数字为8位
printf("%.8s\\n",“abcdefghij”); //超过指定长度截断

输出结果:

00001000
1000.12345679
1000.12345600
1000.1235
abcdefgh

注意: 在对浮点数和整数截断时,存在四舍五入。

以上是关于C语言之printf( )详解的主要内容,如果未能解决你的问题,请参考以下文章

c语言extern关键字详解

C语言printf函数详解和示例

C语言格式输出函数printf()详解

C语言之linux内核可变参实现printf,sprintf

[linux][c/c++]代码片段01

C语言之函数详解