printf函数详解
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函数详解相关推荐
- printf()函数详解
感谢博主的分享:https://me.csdn.net/blog/K346K346 1.printf()简介 printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出.标准输出,即标准 ...
- c语言编写printf函数,C语言之printf函数详解
一 基本用法 格式化控制符:%d %c %ld %lf 意思是:相当于在要输出的语句里面挖了一个坑,也就是在内存中开辟空间,然后再那个坑的位置(也就是开辟好的空间),填上你想要显示的值 printf ...
- C语言printf函数详解和示例
文章目录 1.类型符(type) 2.宽度(width) 3.对齐标志(flags) 4.精度(prec) 5.格式化输出到字符串 6.获取视频教程 7.版权声明 C语言格式化输出的函数有printf ...
- 【C语言】printf()函数详解
printf函数称为格式输出函数,其关键字最末一个字母f即为"格式"(format)之意.其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上.在前面的例题中我们已多次使用过这 ...
- C方式格式化输出(printf 函数详解)
本篇将重点介绍C语言的格式化输出函数 printf.当然该函数在C++程序中也可以使用. 目录 printf 函数构成及标准函数语句 格式字符种类的介绍 printf 函数的具体细节实现 格式符数量与 ...
- C语言printf函数详解
本文已整合到C语言标准库深度解读 printf是绝大多数人接触的第一个C语言函数,但绝大多数人对printf的认识也就到了hello world为止了,很多人甚至看不懂这个函数的声明: int pri ...
- MATLAB-printf函数详解
常用格式: fid = fopen("filename","permission");%按照指定方式打开文件 printf(fid,"format&q ...
- C语言网络编程:accept函数详解
文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...
- linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解
在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...
最新文章
- linux fdisk等命令,Linux fdisk命令操作磁盘(添加、删除、转换分区等)
- 安装完毕freebsd的后续工作,安全设置及其他(适合新手)
- html2个表单,单个html angular2中的多个表单
- UVa140 Bandwidth 【最优性剪枝】
- 浏览器的全屏功能小结
- 《汇编语言》总结04 —— 更灵活的定位内存地址的方法
- Transfer-Encoding: chunked
- VCGLib中邻接关系的实现
- 基本数据结构----顺序表
- Windows电脑上最好的3个txt阅读器
- c语言数学函数库根号程序,用C 编写程序时根号肿么输入
- R语言入门——平均相对误差的计算
- linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
- 实习日记 08/23 day33 理解JVM---Java核心卷中的并发
- 女孩做妻子前应知道的10件事
- 中国网:防火墙之父发声
- 贪心搜索(greedy search)、集束搜索(beam search)、随机采样(random sample)
- python爬取王者_用Python爬取王者农药英雄皮肤
- 阿里资深软件测试工程师推荐—混沌工程(Chaos Engineering)初识
- 网站安全检测被 提示该网站内容被禁止访问