c语言的printf函数代码格式化,格式化输出函数:printf 那些事 (C语言)

printf函数提供格式化输出转换

函数包含在头文件    中

#include

......

函数的原型在头文件的声明为

_CRTIMP __cdecl __MINGW_NOTHROW int printf (const char *, ...);

第一个参数  const char * 来指明输出的格式 , 按照格式对输出进行转换, 并写到标准输出流中(stdin),后面的三个点  . . . 表示此处的参数是可变参数,这样可以满足不同的输出需求

如果打印输出成功函数返回打印的字节数(函数返回值为  int  类型), 如果出错则返回一个负值

1 #include

2

3 int main()

4 {

5 int i = printf("你好\n");

6 printf("%d\n", i);

7 return 0;

8 }

输出

你好

5

成功输出   你好  并且返回打印的字符个数  5  (一个汉字的编码占2个字节 * 2 + '\n'一个字节  = 5)

格式串由两种类型对象组成:

----- 普通字符(将被复制到输出流中)

----- 转换说明(分别决定下一个后续参数的转换和打印), 每个转换说明均以 % 开头, 以转换字符结束, 在%与转换字符之间可以一次包括下列内容

标志

-   指定被转换的参数在其字段内左对齐

#include

int main()

{

printf("%20s\n", "hello world\n");

printf("%-20s\n", "hello world\n");

return ;

}

输出

hello world

hello world

+  只定在输出的数前面加上正负号

#include

int main()

{

int i = printf("%20s\n", "hello world\n");

printf("%d\n", i);

printf("%+d\n", i);

printf("%+d\n", -i);

return ;

}

输出

hello world

21

+21

-21

空格  如果第一个字符不是正负号, 则在它的前面加上空格

#include

int main()

{

int i = printf("%20s\n", "hello world\n");

printf("%d\n", i);

printf("%+d\n", i);

printf("%+d\n", -i);

printf("%+ d\n", -i);

printf("% d\n", i);

return ;

}

输出

hello world

21

+21

-21

-21

21

0  对于数制转换, 当输出长度小于字段宽度时, 在前面添加 0 作为填充

#include

int main()

{

int i = printf("%20s\n", "hello world\n");

printf("%06d\n", i);

return ;

}

输出

hello world

000021

#  指定另一种输出格式。 如果为 o 则第一个数字为0(表示八进制), 如果为 x 或 X , 则指定在输出的非0值前加 0x 或 0X (表示十六进制)

#include

int main()

{

int i = printf("你好!!!\n");

printf("%#o\n", i);

return ;

}

输出

你好!!!

010

共 8 个字节, 八进制是  010

#include

int main()

{

int i = printf("!!!!!!你好!!!!!\n");

printf("%#x\n", i);

printf("%#X\n", i);

return ;

}

输出

!!!!!!你好!!!!!

0x10

0X10

共 16 个字节, 十六进制是  0x10

一个数值, 用于指定最小字段宽度

#include

int main()

{

printf("%d\n", );

printf("%d\n", );

printf("%d\n", );

printf("%6d\n", );

printf("%6d\n", );

printf("%6d\n", );

return ;

}

输出

8

9

10

8

9

10

当然这里默认是右对齐的

点号,用于分隔字段宽度和精度

表示精度的数

#include

#define PI 3.1415926535897932384626433832795028841971693993751058209

int main()

{

printf("%30.20f\n", PI);

}

输出

3.14159265358979310000

可以看出双精度浮点型可以精确到小数点后 16 位左右

-------------------  宽度和精度中任何一个或者两个都可以用 * 代替, 通过转换下一个参数计算得到(下一个参数必须为 int 类型)

#include

#define PI 3.1415926535897932384626433832795028841971693993751058209

int main()

{

int a = , b = ;

printf("%*.*f\n", a, b, PI);

}

当然结果和上面一样

长度修饰符 h , l 或 L 。

h:将相应的参数按照 short 或 unsigned short 类型输出

l:将相应的参数按照 long 或 unsigned long 类型输出

L:将相应的参数按照 long double 类型输出

printf 函数的转换字符(以 % 开头, 如果 % 后面的字符不是转换字符, 则它行为没有定义)

转换字符

参数类型, 转换结果

d, i

int, 有符号十进制表示

o

unsigned int, 无符号八进制表示(无前导0)

x, X

unsigned int, 无符号十六进制表示(无前导0x和0X)。如果是0x, 则使用abcdef, 如果是0X, 则使用ABCDEF

u

int, 无符号十进制表示

c

int, 转换为unsigned char类型后为一个字符

s

char *, 打印字符串中的字符, 知道遇到 '\0' 或者已经打印了有精度指定的字符数

f

double, 形式为 [-]mmm.ddd 的十进制表示, 其中, d的数目由精度确定, 默认精度为6, 精度为0时不输出小数点

e, E

double, 形式为 [-]m.dddddd   e (+/-) xx 或 [-]m.dddddd   E (+/-) xx 的十六进制表示, d的数目由精度确定, 默认为6, 精度为0时不输出小数点

g, G

double, 当指数小于 -4 或大于等于精度时, 采用 %e 或 %E 的格式, 否则采用 %f 的格式, 尾部的0与小数点不打印

p

void *, 打印指针值(具体表示方式与实现有关)

n

int *, 到目前为止, 此printf调用输出的字符的数目将被写入到相应参数中, 不进行参数转换

%

不进行参数转换, 打印一个符号 %

C语言printf()函数:格式化输出函数

C语言printf()函数:格式化输出函数 头文件:#include printf()函数是最常用的格式化输出函数,其原型为:     int printf( char ...

c语言中格式化输出函数的研究

; 1.前言 在gcc编程中,我们比较经常用到的字符格式化输出函数是printf的,实际上gcc继承了c语言处理字符具有强大功能的风格,它提供了一系列的格式化输出函数,主要存在两个库 ...

XLT格式化XML那点事(C#代码中的问题解决)(二)

接上篇,本文就如何将大的XLST分割成小文件和如何用C#将XML通过XSL生成HTML文件中的问题做下分析,避免有同样需求的 ...

XML通过XSL格式化的那点事(XML到自定义节点折叠显示)

引言 有时我们想看下系统生成的XML文件(如XML格式的Project文件),如果文件结构简单,我们浏览器看起来还比较方便,但是随着XML schema复杂后就变得让人头疼啦,单独写一个程序去做展现又 ...

7.20.01 java格式化输出 printf 例子

java格式化输出 printf 例子 importjava.util.Date; publicclassPrintf { publicstaticvoidmain(String[] args) { ...

Java面向对象 第2节 Scanner 类和格式化输出printf

§Scanner 类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 1.创建 Scanner 对象的基本语法:Scanner s = ...

【转】java格式化输出 printf 例子

[转]java格式化输出 printf 例子 转自http://www.cnblogs.com/TankMa/archive/2011/08/20/2146913.html#undefined imp ...

shell编程系列15--文本处理三剑客之awk格式化输出printf

shell编程系列15--文本处理三剑客之awk格式化输出printf printf的格式说明符 格式符 含义 %s 打印字符串 %d 打印十进制数 %f 打印一个浮点数 %x 打印十六进制数 %o ...

【JAVA】格式化打印printf的使用

格式化打印printf的使用 import java.util.Date; /** * 使用printf输出 */ /**关键技术点 * 使用java.io.PrintStream的printf方法实 ...

随机推荐

dialog 模块化窗口

xDialog 方法 说明 参数 modal(opts) 模块化弹窗 opts={ title:'标题' , width : '宽度(400)', height : '高度(300)', button ...

SpringMvc:处理模型数据

SpringMvc提供了以下途径输出模型数据: -ModelAndView:处理方法返回值类型为ModelAndView,方法体即可通过该对象添加模型数据 -Map或Model:入参为org.spri ...

JavaOOP项目 CMS内容管理系统

数据库里创建一个News表,要有标题.作者.时间.内容等列. 1:首先要使用JDBC进行数据库连接,得先在项目里新建一个Folder,把Sqlserver 的驱动jar包导入. 2:使用MyEclip ...

nyoj 97 兄弟郊游问题

点击打开链接 兄弟郊游问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发.以每分钟Y米的速度去追弟弟 ...

C++ 变量转换

atoi,atol,strtod,strtol,strtoul实现类型转换2006-02-13 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://ivanvic.blogb ...

cocos2dx - android环境配置及编译

接上一节内容:cocos2dx - 伤害实现 本节主要讲Android环境配置及编译 在第一节中setup.py的配置里,我们没有配置对应的ndk,sdk,ant的路径,在这里需要先配置好环境变量. ...

Mac版AppStore无法下载、升级错误处理

在mac版本AppStore下载软件的时候,有时会出现"This item is temporarily unavailable, Try again later"错误提示,当然等 ...

eclipse设置新建jsp文件默认字符编码为utf-8

在使用Eclipse开发中,编码默认是ISO-8859-1,不支持中文.这样我们每次新建文件都要手动修改编码,非常麻烦.其实我们可以设置文件默认编码,今后再新建文件时就不用修改编码了. 1.打开Ecl ...

Linux 搜索日志信息

在工作中我们经常要通过日志来查找问题,但有时候日志太多又不知道日志什么时候打印的,这时我们可以通过一下方法来查找: 1.进入到日志文件存放的目录下 2.grep  关键字  *    例如要查找多有有 ...

LOJ6089 小Y的背包计数问题 背包

正解:背包 解题报告: 先放传送门! 好烦昂感觉真的欠下一堆,,,高级数据结构知识点什么的都不会,基础又麻油打扎实NOIp前的题单什么的都还麻油刷完,,,就很难过,,,哭辣QAQ 不说辣看这题QwQ! ...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值