printf格式化输出函数

本文详细介绍了C语言中的printf函数,包括其功能、使用形式和参数解析。printf函数用于格式化输出数据,支持多种格式控制符,如%d、%o、%x等,以及宽度和精度设置。通过示例代码展示了如何输出整数、浮点数和字符。文章还涵盖了格式控制的标志、宽度和精度等选项的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数原型int printf(char * format[,argument,…]);
函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,则返回负数。
使用的一般形式为:

	printf("格式控制字符串",输出项列表);

“输出项列表”列出要输出的表达式(如常量、变量、运算符表达式、函数返回值等),它可以是0个、一个或多个,每个输出项之间用逗号(,)分隔。输出的数据可以是整数、实数、字符和字符串。

例:

	int a=1,b=2,c=3;
	printf("a=%d b=%d c=%d\n",a,b,c);    //a=1 b=2 c=3

“格式控制字符串"必须用英文的双引号括起来,控制输出项的格式和输出一些提示信息。
即例子中的 “a=%d b=%d c=%d\n” 部分,其中 “a=” 、“b=” 、“c=” 是普通字符,原样输出;“%d” 是格式控制符;”\n" 是转义字符,作用是换行。

格式控制字符串由3部分组成:普通字符、转义字符、输出项格式说明。

(1)普通字符:按原样输出,主要用于输出提示信息。
(2)转义字符:指明特定的操作,如 “\n” 表示换行,"\t" 表示水平制表等。
(3)格式说明部分:由“%”和“格式字符串”组成,他表示按规定的格式输出数据。

格式说明的形式为:%[flags][width][.prec][F|N|h|I][type]

各部分说明如下:

  1. “[]” 部分表示该项为可选项
  2. [flags] 为可选择的标志字符,标志字符有:
标志意义
-结果左对齐,右边填空格
+输出符号(正号或负号)
空格输出值为正时冠以空格,为负时冠以负号
#对c、s、d、u类无影响;
对o类,在输出时加前缀o;
对x类,在输出时加前缀0x;
对e、g、f 类当结果有小数时才给出小数点。
  1. [width] 为可选择的宽度指示符,控制输出的最小宽度
    用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
  2. [.prec] 为可选的精度指示符,以“.”开头,后跟十进制整数。
    如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
  3. [F|N|h|I] 为可选的输出长度修饰符,其功能如下:
符号含义
F输出远指针存放的地址
N输出近指针存放的地址
h输出短整型数据的值
l输出长整型或双精度型数据的值

关于远指针和近指针可以看这篇博文:远指针和近指针,还有巨指针到底是啥玩意

  1. type 为可选的格式字符,用来进行格式转换。
格式字符含义
d十进制形式输出带符号整数(正数不输出符号)
o八进制形式输出无符号整数(不输出前缀0)
u十进制形式输出无符号整数
x十六进制形式输出无符号整数(不输出前缀0x),以小写abcdef表示
X十六进制形式输出无符号整数(不输出前缀0x),以大写ABCDEF表示
c输出单个字符
s输出字符串
F/f小数形式输出单、双精度实数
E/e指数(科学计数法)形式输出单、双精度实数
G/g以%f或%e中较短的输出宽度输出单、双精度实数

PS. 用 “%%” 来输出字符 “%”

例:

#include<iostream>
using namespace std;
int main(){
   int a=9;
   double b=123.1234567;
   char d='a';

   printf("a=%d\n", a);
   printf("a(%%d)=%d, a(%%2d)=%02d, a(%%o)=%o, a(%%x)=%x\n\n",a,a,a,a);

   printf("a=%f\n", b);
   printf("b(%%f)=%f, b(%%lf)=%lf, b(%%5.4lf)=%5.4lf, b(%%e)=%e\n\n",b,b,b,b);

   printf("d=%c\n", d);
   printf("d(%%c)=%c, d(%%8c)=%8c\n\n",d,d);
   
   printf("%s\n","CHINA");
   return 0;
}

输出结果如图:
输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值