printf()函数详解

一、printf()简介

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

函数原型:

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

返回值:
正确返回输出的字符总数,错误返回负值,与此同时,输入输出流错误标志将被置值,可由指示器ferror来检查输入输出流的错误标志。

调用格式:printf("格式控制字符串", 输出表列)

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

1、字符串常量

2、格式控制字符串

3、转义字符

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

二、格式控制字符串详解

printf的格式控制字符串组成如下:

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

分别为:

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

1、类型(type)

类型是格式控制字符串的重中之重,是必不可少的组成部分,其它的选项都是可选的。type用于规定输出数据的类型,含义如下:

数据类型字符含义示例
intd输出十进制有符号整数printf("%d",123);输出123
unsigned intu输出无符号十进制整数printf("%u",123);输出123
float(doubule)f / lf

单精度浮点数用f

双精度浮点数用lf

(printf可混用

scanf不可混用)

printf("%.9f %.9lf",0.000000123,0.000000123)

输出0.000000123 0.000000123,注意精度

否则printf默认精确到小数点后六位

charc字符型。可以吧输入的数字按照ASCII码相应转换为对应的字符printf("%c\n",64);输出A
char*s

字符串。输出字符串中的字符直至字符串中的空字符

(字符串一空字符'\0'结尾)

printf("%s","测试test");

输出:测试test

void*p以16进制形式输出指针

printf("%010p","lvlv")

输出:0x004007e6

字符%%输出字符'%'本身printf("%%");输出:%

2、标志(flags)

flags规定输出样式,取值和含义如下:        

名称字符说明
减号-结果左对齐,右边填空格。默认是右对齐,左边填空格
加号+输出符号(正负号)
空格space输出值为正时加上空格,为负时加上符号
井号#

type是o,x,X时,增加前缀0、0x、0X

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

type是g、G时,尾部的0保留

数字零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

输出结果为:
这里写图片描述

3、精度(.precision)

精度格式符以”.“开头,后跟十进制正数。可取值如下:

十进制整数

1)、对于整形(d,i,o,u,x,X):precision表示输出的最小的数字个数,不足补前导零,超过不截断。

2)、对于浮点型(a,A,e,E,f),precision表示小数点后数值位数,默认为六位,不足补后置0,超过则截断。

3)、对于类型说明符g或G,表示可输出的最大有效数字

4)、对于字符串(s),precision表示最大可输出字符数,不足正常输出,超过则截断。

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

precision不现实指定,则默认为0

示例:

printf("%.8d\n",1000);          //不足指定宽度补前导0,效果等同于%06d
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

基础内容,更详细的见printf()用法详解_printf函数的用法_sugarbliss的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值