printf

printf()函数是格式化输出函数, 一般用于向标准输出设备(显示器、控制台等终端)按规定格式输出信息,其关键字最末一个字母f即为“格式”(format)之意。

输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。


【例】printf函数举例

#include <stdio.h>
int main(void){int a=88,b=89;printf("%d %d\n",a,b);printf("%d,%d\n",a,b);printf("%c,%c\n",a,b);printf("a=%d,b=%d",a,b);return 0;
}

本例中四次输出了a、b的值,但由于格式化字符串不同,输出的结果也不相同。

  • 第3行的输出语句格式化字符串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a、b值之间有一个空格。
  • 第4行的printf语句格式化字符串中加入的是非格式字符逗号,因此输出的a、b值之间加了一个逗号。
  • 第5行的格式串要求按字符型输出a、b值。
  • 第6行中为了提示输出结果又增加了非格式化字符串。

printf函数是一个标准库函数,在c语言里,它被定义在头文件 stdio.h中。C++中,cstdio和stdio.h这两个标准输入输出头文件里面都有printf函数。

printf()函数的调用格式为:

printf("<格式化字符串>", <参量表>);/**********(函数的原型为)*********/
int printf(const char *format,...);//*函数返回值为整形,若成功则返回输出的字符数,输出出错则返回负值。*

“<格式化字符串>”由要输出的内容和数据格式说明组成。

输出的内容又由两部分组成,其中非格式化字符部分按照原样输出(在显示中可起到提示作用);另一部分是格式化规定字符,通常意义上格式为:%[flags][width][.prec][F|N|h|l]type,以“%”开始,后面跟有各种格式字符,以说明输出的数据的类型、形式、长度、小数位数等。

参量表中是需要输出的一系列参数,要求必须与格式化字符串在数量和类型上应该一一对应,参数间以”,”分开。

flags

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

字符 字符名称 说明
- 减号 左对齐,右边填充空格(默认右对齐)
- 加号 在数字前增加符号 + 或 -
0 数字零 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”)
空格 输出值为正时加上空格,为负时加上负号
# 井号 type是o、x、X时,增加前缀0、0x、 0X ; type是e、E、f、g、G时,一定使用小数点;type是g、G时,尾部的0保留

width

用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
若此栏并非数值,而是’*’符号,则表示以下一个参数当做参数长度。

prec

精度格式符以“.”开头,后跟十进制整数。如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

prec 有几种情况:
- 正整数的最小位数
- 在浮点型数中代表小数位数
- 格式代表有效位数的最大值
- 在%s 格式代表字符串的最大长度
- 若为×符号则代表下个参数值为最大长度

F|N|h|l

表示指针是否是远指针或整数是否是长整数
- F 远指针
- N 近指针
- h 短整数(short int)
- l 长整数(long int) (此处如果与d搭配为%lld则为long long int(C99),与f搭配为%llf则为long double(C99))

type

type的字符用于规定输出数据的类型,含义如下:

字符 对应数据类型 含义
d/i int 接受整数值并将它表示为有符号的十进制整数,i是老式写法
o unsigned int 无符号8进制整数(不输出前缀0)
u unsigned int 无符号10进制整数
x/X unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)
f(lf) float(double) 单精度浮点数用f,双精度浮点数用lf(尤其scanf不能混用)
e/E double 科学计数法表示的数,此处”e”的大小写代表在输出时用的“e”的大小写
g/G double 有效位数,如:%8g表示单精度浮点数保留8位有效数字。双精度用lg
c char 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
s/S char * / wchar_t * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以’\0‘结尾,这个’\0’即空字符)
p void * 以16进制形式输出指针
n int * 到此字符之前为止,一共输出的字符个数,不输出文本
% 无输入 不进行转换,输出字符‘%’(百分号)本身
m 打印errno值对应的出错内容,(例: printf(“%m\n”); )

注:%g、%G在小数点位数四位或指数大于等于精度时用%e、%E,否则用%f。

转义序列

这些转义序列在字符串中会被自动转换为相应操作命令

符号 意义 符号 意义
\a 铃声(提醒) \b Backspace
\f 换页 \n 换行
\r 回车 \t 水平制表符
\v 垂直制表符 \’ 单引号
\” 双引号 \ 反斜杠
\? 文本问号 \ ooo(例如:\024) ASCII字(OC X)
\xhh(例如:\x20) ASCII字符(HEX) \xhhhh 宽字符(2字节HEX)

例如,WCHAR f = L’\x4e00’ 或 WCHAR b[] = L”The Chinese character for one is \x4e00”。


示例

#include<stdio.h>
#include<string.h>
int main(void)
{
charc,s[20],*p;
inta=1234,*i;
floatf=3.141592653589;
doublex=0.12345678987654321;
p="Howdoyoudo";
strcpy(s,"Hello,Comrade");
*i=12;
c='\x41';
printf("a=%d\n",a);/*结果输出十进制整数a=1234*/
printf("a=%6d\n",a);/*结果输出6位十进制数a=1234*/
printf("a=%06d\n",a);/*结果输出6位十进制数a=001234*/
printf("a=%2d\n",a);/*a超过2位,按实际值输出a=1234*/
printf("*i=%4d\n",*i);/*输出4位十进制整数*i=12*/
printf("*i=%-4d\n",*i);/*输出左对齐4位十进制整数*i=12*/
printf("i=%p\n",i);/*输出地址i=06E4*/
printf("f=%f\n",f);/*输出浮点数f=3.141593*/
printf("f=%6.4f\n",f);/*输出6位其中小数点后4位的浮点数
f=3.1416*/
printf("x=%lf\n",x);/*输出长浮点数x=0.123457*/
printf("x=%18.16lf\n",x);/*输出18位其中小数点后16位的长浮点
数x=0.1234567898765432*/
printf("c=%c\n",c);/*输出字符c=A*/
printf("c=%x\n",c);/*输出字符的ASCII码值c=41*/
printf("s[]=%s\n",s);/*输出数组字符串s[]=Hello,Comrade*/
printf("s[]=%6.9s\n",s);/*输出最多9个字符的字符串s[]=Hello,
Co*/
printf("s=%p\n",s);/*输出数组字符串首字符地址s=FFBE*/
printf("*p=%s\n",p);/*输出指针字符串p=Howdoyoudo*/
printf("p=%p\n",p);/*输出指针的值p=0194*/
getch();
return 0;
}

printf函数详解相关推荐

  1. printf()函数详解

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

  2. c语言编写printf函数,C语言之printf函数详解

    一  基本用法 格式化控制符:%d %c %ld %lf 意思是:相当于在要输出的语句里面挖了一个坑,也就是在内存中开辟空间,然后再那个坑的位置(也就是开辟好的空间),填上你想要显示的值 printf ...

  3. C语言printf函数详解和示例

    文章目录 1.类型符(type) 2.宽度(width) 3.对齐标志(flags) 4.精度(prec) 5.格式化输出到字符串 6.获取视频教程 7.版权声明 C语言格式化输出的函数有printf ...

  4. 【C语言】printf()函数详解

    printf函数称为格式输出函数,其关键字最末一个字母f即为"格式"(format)之意.其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上.在前面的例题中我们已多次使用过这 ...

  5. C方式格式化输出(printf 函数详解)

    本篇将重点介绍C语言的格式化输出函数 printf.当然该函数在C++程序中也可以使用. 目录 printf 函数构成及标准函数语句 格式字符种类的介绍 printf 函数的具体细节实现 格式符数量与 ...

  6. C语言printf函数详解

    本文已整合到C语言标准库深度解读 printf是绝大多数人接触的第一个C语言函数,但绝大多数人对printf的认识也就到了hello world为止了,很多人甚至看不懂这个函数的声明: int pri ...

  7. MATLAB-printf函数详解

    常用格式: fid = fopen("filename","permission");%按照指定方式打开文件 printf(fid,"format&q ...

  8. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

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

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

最新文章

  1. linux fdisk等命令,Linux fdisk命令操作磁盘(添加、删除、转换分区等)
  2. 安装完毕freebsd的后续工作,安全设置及其他(适合新手)
  3. html2个表单,单个html angular2中的多个表单
  4. UVa140 Bandwidth 【最优性剪枝】
  5. 浏览器的全屏功能小结
  6. 《汇编语言》总结04 —— 更灵活的定位内存地址的方法
  7. Transfer-Encoding: chunked
  8. VCGLib中邻接关系的实现
  9. 基本数据结构----顺序表
  10. Windows电脑上最好的3个txt阅读器
  11. c语言数学函数库根号程序,用C 编写程序时根号肿么输入
  12. R语言入门——平均相对误差的计算
  13. linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
  14. 实习日记 08/23 day33 理解JVM---Java核心卷中的并发
  15. 女孩做妻子前应知道的10件事
  16. 中国网:防火墙之父发声
  17. 贪心搜索(greedy search)、集束搜索(beam search)、随机采样(random sample)
  18. python爬取王者_用Python爬取王者农药英雄皮肤
  19. 阿里资深软件测试工程师推荐—混沌工程(Chaos Engineering)初识
  20. 网站安全检测被 提示该网站内容被禁止访问

热门文章

  1. sleuth原理详解
  2. 整合Spring Cloud Sleuth
  3. 一文读懂什么是软件定义光网络(SDON)?
  4. 2021idea快捷键及设置(最新)
  5. 使用pip下载requierments.txt文件的具体方法
  6. 链表反转的四种方法(栈、头插法、三指针法、递归法)
  7. 算法详解——单向链表反转
  8. 多目标规划(数学建模)
  9. 人在国内年入 12 万美元欧洲远程工作四年经验分享
  10. 华为p50pocket怎么样?理性讨论还有哪些值得选的折叠屏