1.printf()简介

printf() 是 式样化 输出函数, 简单说 就是 规定式样输出消息 的函数。

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

printf() 所在头文件 stdio.h

#include <stdio.h>

函数原型:

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

返回值:

正确情况下 返回 输出的 字符总数
错误情况下 返回 负值;同时输入输出流错误标志将被置位,通过 ferror 来检查输入输出流的错误标志

调用格式:

printf (“格式化字符串”, 输出表列);

格式化字符串 包含三种对象:

(1)字符串常量 (按原样输出);

(2)格式控制字符串 (按照一定格式输出;以%开头的字符串,%后面跟着 各种格式控制符,以说明输出数据的类型、宽度、精度等);

(3)转义字符 (以\开头+字母的特殊操作命令字符,如:\r 回车; \n 换行等)。

2.字符串常量

字符串就是按原样输出,写啥就输出啥!

3.格式控制字符串

格式控制字符串 形式:

"%【标志】【宽度】【.精度】【长度】类型” 【】表示可省略,根据需要添加。

3.1标志

格式字符 意义
- 输出 结果左对齐,右边填空格(和输出最小宽度搭配使用)
+ 输出 结果右对齐,左边填空格(和输出最小宽度搭配使用),同时显示符号
# 类型是o、x、X时,增加前缀0、0x、0X。
类型是a、A、e、E、f、g、G时,一定使用小数点。默认的,如果使用.0  
控制不输出小数部分,则不输出小数点。
类型是g、G时,尾部的0保留。
空格 输出值为正时加上空格,为负时加上负号
0 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”)

3.2宽度

宽度 描述 示例
数值 十进制整数 printf("%06d",1000);输出:001000
* 星号。不显示指明输出最小宽度,而是以星号代替,在printf的输出参数列表中给出 printf("%0*d",6,1000);输出:001000
*     星号。还可以控制浮点型数字保留的位数 printf("%.*f", x, a); x是位数控制

示例代码:

#include <stdio.h>void main(void)
{int x = 9;printf("%03d \r\n", x); //补0凑齐3位printf("%02d \r\n", x); //补0凑齐2位printf("%3d \r\n", x); //补空格,凑齐3位printf("%d \r\n", x); //不补位,输出有效位
}

输出:

3.3精度

.精度 描述
.数值 对于整数说明符(d, i, o, u, x, x): precision指定要写入的最小数字数。如果要写入的值比这个数字短,结果将用前导零填充。即使结果较长,值也不会被截断。精度为0意味着不为值0写入字符。
对于a, a, e, e, f和f说明符:这是小数点后要打印的位数(默认为6)。
对于g和g说明符:这是要打印的有效数字的最大数量。
对于s:这是要打印的最大字符数。默认情况下,将打印所有字符,直到遇到结束符空字符为止。
如果指定的周期没有显式的精度值,则假定为0。
.* 精度不是在格式字符串中指定的,而是作为必须格式化的参数之前的附加整数值参数。

3.4长度

说明符
Keil C51 标准C d i u o x X f F e E g G a A c s p n
类型长度符号 类型长度 类型长度符号 类型长度
(无) 默认 int (无) 依据类型默认 int unsigned int double int char* void* int*
b 8位 hh 8位 signed char unsigned char signed char*
h 16位 h 16位 short int unsigned short int short int*
l 32位 l 32位 long int unsigned long int wint_t wchar_t* long int*
ll 64位 ll 64位 long long int unsigned long long int long long int*

在Keil C51中用printf输出一个单字节变量时要使用%bd,如:

printf(“Current count: %bd\n”, counter);//输出8位”十进制有符号整数”
printf(“Current count: %bx\n”, counter);//输出8位”无符号以十六进制表示的整数”

在标准C语言中都是使用%d:

printf(“Current count: %d\n”, counter);

3.5类型

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

格式字符 输出示例 意义
%d printf("%d",16); 以十进制输出带符号整数(正数不输出符号)
%u printf("%u",16); 以十进制输出无符号整数
%f printf("%f",3.14); 以小数形式输出单、双精度实数
%s printf("%s","Chi"); 输出字符串
%c printf("%c",'x'); 输出单个字符
%x printf("%x",5B); 以十六进制输出无符号整数(不输出前缀 0x)
%o printf("%o",75); 以八进制输出无符号整数(不输出前缀 0)
%e printf("%e",30000); 以指数形式输出单、双精度实数
%g printf("%e",30000); 以 %f、%e 中较短的宽度输出单、双精度实数
%p  输出地址符

4.转义字符

转义字符 意义
\r  回车符
\n   换行符
\f  清屏并换页符
\t  横向制表符
\v 纵向制表符
\a 警报(响铃)符
\b 回退符
反斜杠
\” 双引号
\xhh 表示一个ASCII码用16进表示,其中hh是1到2个16进制数

printf()输出格式详解(Keil C51 、标准C)相关推荐

  1. C语言自学完备手册(07)——printf()输出格式详解

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  2. 函数中{}输出格式详解(C#)

    Console.WriteLine()函数中{}输出格式详解(C#) Console.WriteLine()函数的格式一直没怎么注意.今天同事问起Console.WriteLine({0:D3},a) ...

  3. python 标准输出_详解Python的标准输入输出

    本篇文章给大家分享的是详解Python的标准输入输出,内容挺不错的,希望可以帮助到有需要的朋友 一.标准输入输出 1.打印到屏幕 产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个 ...

  4. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  5. Linux Shell脚本入门教程系列之(八)Shell printf命令详解

    本文是Linux Shell脚本系列教程的第(八)篇,更多shell教程请看:Linux Shell脚本系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对She ...

  6. printf()用法详解

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

  7. printf()终极详解

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

  8. printf()函数详解

    感谢博主的分享:https://me.csdn.net/blog/K346K346 1.printf()简介 printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出.标准输出,即标准 ...

  9. 图文详解STM32F0xx基于标准库新建工程

    之前从来没有接触过F0系列,更没有基于STM32F0标准库函数新建工程的经历,但是新建F1系列那还都是家常便饭,可是没有想到折腾了大半天才成功,最后记录一下吧.保证可以从无到有,详细记录每一个步骤. ...

最新文章

  1. 如何安全的存储用户密码?(中)代码篇
  2. Java synchronized的CPU层面实现细节
  3. 图解leetcode初级算法python版 pdf_图解LeetCode初级算法(Python版)
  4. python与机器学习(二)Numpy / Pandas /矩阵相乘速度对比
  5. Nginx+keepalived高可用配置实战
  6. C语言基础专题 - 通过案例历学 - 共用体
  7. 服务器 'server_1' 上的 MSDTC 不可用
  8. 微软收购开源数据库厂商Citus Data,云数据库服务能力再填新砝码
  9. CF1042A Benches
  10. matlab 积分后带int,matlab int 积分
  11. dvr服务器系统,DVR监控软件 V1.0
  12. 深度学习——汉字识别
  13. 写了一个测试体质的工具,其实也可以用于算命。
  14. 重装系统后计算机无法启动,重装系统后电脑为什么启动不了?云骑士告诉你怎么办?...
  15. qq远程控制 总是提示权限不足
  16. Python 手机端自动推送功能(利用极光推送API)
  17. 分而治之 (25 分)
  18. 如何爬取新三板数据库(一)
  19. QT纯代码设计UI界面Demo
  20. 3dmax制作三维地形图

热门文章

  1. ElasticSearch7.3学习(二十七)----聚合概念(bucket和metric)及其示例
  2. 卸载 MacPorts
  3. php递归函数实现阶乘,递归函数之阶乘的实现
  4. 关于Latex中png图片输出有边框/黑线的解决方法
  5. 到底死不死我就请了七天假_“爹,你到底死不死,我就请了七天假。”
  6. Go语言学习之path/filepath包(the way to go)
  7. L1-016 查验身份证 (15分)
  8. 第二讲:C++对C的扩充(1)
  9. js版计算连续12个月计算不超3万公里
  10. 中科院大牛博士是如何进行文献检索和阅读的(好习惯受益终生)【转】