C语言 printf 的用法总结(完善中)

printf函数是一个“可变参数函数”,其函数的参数的个数和类型都是可变的,每一个参数的输出格式都有对应的格式说明符与之对应,从格式串的左端第1 个格式说明符对应第 1 个输出参数,第 2 个格式说明符对应第 2 个输出参数,第 3个格式说明符对应第 3 个输出参数,以此类推。

其中,格式说明符的形式如下(方括号 [] 中的项为可选项):

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

/*用中文标识如下:*/

%[标志符][宽度][精度][长度]类型符

1、类型符(type)

它用以表示输出数据的类型,以下是常用类型的汇总,不常用的就不介绍了。

(1)%hd、%d、%ld: 以十进制、有符号的形式输出 short、int、long 类型的整数。

(2)%hu、%u、%lu:以十进制、无符号的形式输出 short、int、long 类型的整数

(3)%c: 输出字符。

(4)%lf: 以普通方式输出double(float弃用,long doube无用)。

(5)%e: 以科学计数法输出double。

(6)%s: 输出字符串。

(7)%x 以十六进制形式输出整数,这个很重要。

(8)%o 以八进制整数形式输出,这个就用得很少了,了解一下就行了。

2、宽度(width)

它用于控制输出内容的宽度。

printf("=%12s=\n","abc"); // 输出= abc= printf("=%12d=\n",123); // 输出= 123= printf("=%12lf=\n",123.5); // 输出= 123.500000=

3、对齐标志(flags)

flags它用于控制输出内容的对齐方式。

(1)不填或+:输出的内容右对齐,这是缺省的方式,上一小节就是右对齐的示例。

(2)-:输出的内容左对齐。

printf("=%-12s=\n","abc"); // 输出=abc = printf("=%-12d=\n",123); // 输出=123 = printf("=%-12f=\n",123.5); // 输出=123.500000 =

如果输出的内容是整数或浮点数,并且对齐的方式是右对齐,可以加0填充,例如:

printf("=%012s=\n","abc"); // 输出= abc= printf("=%012d=\n",123); // 输出=000000000123= printf("=%012f=\n",123.5); // 输出=00123.500000=

从上面第一行代码的结果看出,输出的内容不是整数或浮点数,是字符串,不能在前面填0。

(3)(space) 正数留空,空格填充

(4)0 0填充

(5)# 十六进制、八进制前分别添加标识符0x, 0

4、精度(prec)

如果输出的内容是浮点数,它用于控制输出内容的精度,也就是说小数点后面保留多少位,后面的数四舍五入。

printf("=%12.2lf=\n",123.5); // 输出= 123.50= printf("=%.2lf=\n",123.5); // 输出=123.50= printf("=%12.2e=\n",123500000000.0); // 输出= 1.24e+11= printf("=%.2e=\n",123500000000.0); // 输出=1.24e+11=

5、长度(length

它用于控制显示数值的长度

(1)hh :与d、i 一起使用,表示一个signed char 类型的值;与o、u、x、X—起使用,表示一个unsigned char 类型的值;与 n 一起使用,表示相应的变元是指向 signed char 型变量的指针(c99 )

(2)h :与d、i、o、u、x、X 或 n 一起使用,表示一个short int 或 unsigned short int 类型的值

(3)l :与d、i、o、u、x、X 或 n 一起使用,表示一个 long int 或者 unsigned long int 类型的值

(4)ll :与 d、i、o、u、x、X 或 n —起使用,表示相应的变元是 long long int 或 unsigned long long int 类型的值(c99 )

(5)i :与 d、i、o、u、x、X 或 n —起使用,表示匹配的变元是 intmax_t 或 uintmax_t 类型,这些类型在“stdint. h”中声明(c99 )

(6)z :与 d、i、o、u、x、X 或 n —起使用,表示匹配的变元是指向 size_t 类型对象的指针,该类型在“stddef. h”中声明(c99 )

(7)t :与d、i、o、u、x、X 或 n —起使用,表示匹配的变元是指向 ptrdiff_t 类型对象的指针,该类型在“stddef. h”中声明(c99 )

(8)L :和a、A、e、E、f、F、g、G—起使用,表示一个long double类型的值

6、格式化输出到字符串

int printf(const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...);

printf是把结果输出到屏幕,sprintf把格式化输出的内容保存到字符串str中,snprintf的n类似于strncpy中的n,意思是只获取输出结果的前n-1个字符,不是n个字符。

C语言提供了把字符串转换为整数和浮点数据的库函数,但是没有把整数和浮点数据转换为字符串的库函数,而是采用sprintf和snprintf函数格式化输出到字符串。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值