C语言printf函数详解
本文已整合到C语言标准库深度解读
printf
是绝大多数人接触的第一个C语言函数,但绝大多数人对printf
的认识也就到了hello world
为止了,很多人甚至看不懂这个函数的声明:
int printf(const char *format, ...)
关键是字符串格式比较复杂,可以表示为%[flags][width][.precision]specifier
例如
#include<stdio.h>
#define PI 3.14159265358979323846264338327950288int main(){printf("%6.2f",PI);return 0;
}
其输出为
E:\Documents\00\1110>a.exe3.14
其中,%6.2f
可分为3部分,6
表示输出六个字符;.2
表示保留2位小数;f
表示输出的是浮点数。由于PI
在保留2
位小数之后,只有4
个字符,所以在3.14
左侧补上了空格。
各参数的取值与含义可见于下表,如果觉得不够直观,可直接跳到测试部分。
specifier 格式化符号
|
|
---|---|
整数 |
〖%d 〗〖%i 〗〖无符号%u 〗
|
无符号不同进制 |
〖八进制%o 〗〖十六进制%x 〗〖大写十六进制%X 〗
|
浮点数 |
〖%f 〗〖科学计数法%e , %E 〗〖%g 用%f 和%e 中较短的那个〗
|
字符和字符串 |
〖字符%c 〗〖字符串%s 〗
|
指针 |
%p 输出指针地址
|
其中,
i, d, o, u, x, X
可通过h
修饰,从而输出短整型;通过l
修饰,从而输出长整型e, E, f, g, G
可通过l
修饰,表示长双精度型,但在Windows下可能没什么差别。
flags 标识
|
描述 |
---|---|
- | 左对齐,默认是右对齐 |
+ | 强制显示正负号 |
# |
与 o、x、X连用时,非零值前面分别显示0、0x 或 0X 与e、E、f连用时,强制包含小数点 与g、G连用时,结果与e、E时相同,但不会移除尾部的零 |
0 | 在数字左边补充0 |
width
表示宽度,为数字时,表示输出字符的最小数目,若输出值比width
短,则用空格填充。
precision
表示精度,为.数字
时,表示写入数字的最小位数。
下面随机抽选一些表达式,列出其输出结果,事先声明一些变量
#define PI 3.14159265358979323846264338327950288
#define IPI 31415926
int main(){float fPI = PI;double dPI = PI;//printfreturn 0;
}
浮点型测试
printf
|
输出 | 说明 |
---|---|---|
"%.10f",fPI
|
3.1415927410 |
float 一般只有6位精度
|
"%.10f",dPI
|
3.1415926536 |
double 可保证15位精度
|
"%010.5f",dPI
|
0003.14159 | 5位精度,10个字符,左侧补0 |
"%015.5E",dPI*1e5
|
0003.14159E+005 | width指字符个数 |
"%#010.0f",dPI*1e5
|
000314159. |
# 强制输出小数点
|
"%+f",dPI
|
+3.141593 |
+ 强制输出正号
|
"%.2G",dPI
|
3.1 | |
"%.2G",dPI*1e10
|
3.1E+010 | 此时显然E模式更短 |
"%010.2G\n%010.4G",dPI
|
00000003.1 000003.142 |
默认右对齐 |
"%-010.2G\n%-010.4G",dPI
|
3.1 3.142 |
- 模式下左对齐,所以0没了
|
整型测试
printf
|
输出 | 说明 |
---|---|---|
%u,IPI
|
31415926 | 作为无符号整型输出 |
%+d,IPI
|
31415926 |
+ 模式强制显示正号
|
%o,IPI
|
167657166 | 输出为8进制 |
%x,IPI
|
1df5e76 | 输出为十六进制 |
%#X,IPI
|
0X1DF5E76 |
# 模式下显示0X
|
在stdio
中,定义了一系列printf
函数和scanf
函数,通过在前面添加一个字母来表示不同的行为:
输出位置 | 使用参数列表 | 读取输入 | |
---|---|---|---|
标准输出(屏幕) |
printf
|
vprintf
|
scanf
|
stream |
fprintf
|
vfprintf
|
fscanf
|
字符串 |
sprintf
|
vsprintf
|
sscanf
|
为了便于阅读,下面默认
#define FORMAT const char *format
其printf
族函数声明分别为
int fprintf(FILE *stream, FORMAT, ...)
int sprintf(char *str, FORMAT, ...)
int vfprintf(FILE *stream, FORMAT, va_list arg)
int vprintf(FORMAT, va_list arg)
int vsprintf(char *str, FORMAT, va_list arg)
int snprintf(char *str, size_t size, FORMAT, ...)
其中snprintf
中的size
表示要写入字符的最大数目,超过size会被截断。
scanf
族函数声明为
int fscanf(FILE *stream, FORMAT, ...)
int scanf(FORMAT, ...)
int sscanf(cSTR, FORMAT, ...)
C语言printf函数详解相关推荐
- C语言printf函数详解和示例
文章目录 1.类型符(type) 2.宽度(width) 3.对齐标志(flags) 4.精度(prec) 5.格式化输出到字符串 6.获取视频教程 7.版权声明 C语言格式化输出的函数有printf ...
- c语言memset对应java,C语言memset函数详解
C语言memset函数详解 memset() 的作用:在一段内存块中填充某个给定的值,通常用于数组初始化与数组清零. 它是直接操作内存空间,mem即"内存"(memory)的意思. ...
- R语言which函数详解以及Rcpp改写
R语言which函数详解以及Rcpp的改写 引言 which 函数的介绍 which函数的一些小例子 1 2 which函数的改进以及时间对比 引言 首先来介绍一下R语言which函数的作用:whic ...
- 【C语言】函数详解(入门到进阶)
目录 前言 一.什么是函数 二.函数的构成 三.函数的调用和声明 四.函数的参数 五.函数的递归 总结 写在后面 前言 最近帮家里的小朋友整理一些学习C语言的知识点 有整体入门基础文章--[C语言]拯 ...
- [C语言] scanf 函数详解多组输入法和gitee 自荐
自荐 gitee>>> C语言学习练习: C语言学习练习 上面是我的gitee C语言仓库链接,欢迎大家来看看我写的代码.!(◦˘ ³(♡ŐωŐ♡)(给大家推荐gitee(码云)这个 ...
- C语言strlen函数详解
strlen函数详解 一.strlen函数简介 1.函数原型 2.注意事项 二.strlen函数模拟实现 1.计数器方式 2.递归实现 3.指针-指针实现 一.strlen函数简介 1.函数原型 si ...
- c语言编写printf函数,C语言之printf函数详解
一 基本用法 格式化控制符:%d %c %ld %lf 意思是:相当于在要输出的语句里面挖了一个坑,也就是在内存中开辟空间,然后再那个坑的位置(也就是开辟好的空间),填上你想要显示的值 printf ...
- 【C语言】printf()函数详解
printf函数称为格式输出函数,其关键字最末一个字母f即为"格式"(format)之意.其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上.在前面的例题中我们已多次使用过这 ...
- printf()函数详解
感谢博主的分享:https://me.csdn.net/blog/K346K346 1.printf()简介 printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出.标准输出,即标准 ...
最新文章
- burpsuite配置指南
- 经典网络LeNet5看卷积神经网络各层的维度变化
- Python中使用turtle绘制多个同心圆
- C语言*在变量前 **p,C语言之指针*p++和*(p++)区别
- 关于eclipse的实用技巧
- Neo4j数据导入与可视化
- Q-learning学习笔记
- java线程cpu 1000_CPU突然飙升到300%,Dubbo活动线程数直接飙到1000
- gsoap开发webservice
- Linux内核4.17再获捷报
- 企业经常说绩效管理难,误区在哪?附绩效管理系统解决方案
- 自建pop邮件服务器,POP是什么?怎样开通?
- 为什么电脑屏幕会横过来_电脑屏幕横过来了怎么办
- rust 案例_深入浅出rust.pdf 高清版
- QDateTime 和tm 的时间显示
- APP下载链接在微信内打不开显示已停止访问该网页怎么办?
- 密码库LibTomCrypt学习记录——(2.25)分组密码算法的工作模式——EAX加密认证模式
- matlab上万大型矩阵求逆,要好好总结一下超大矩阵求逆的技巧了
- 搜集的一些neural style style github source and website
- 浙江大学计算机博士宿舍,博士们的待遇如何,以浙江大学为例子
热门文章
- ozon跨境平台如何实现自己养号给自己店铺测评呢?
- 电视和计算机屏幕有哪三中颜色组成,合成彩色电视机和计算机屏幕上艳丽画面的色光是:[]A.红、绿、蓝...
- c++复习日记2 虚函数和多态性
- LeetCode每日一题: 仅仅反转字母(No.917)
- 【Linux学习笔记22】mysql数据库的基本管理
- 蓝海创意云获苏州电信2022年度“云业务优秀合作方”表彰
- tomcat,java,jdk verson match
- pkuseg分词的词性表
- 基于均值滤波的非线性反锐化掩膜
- 年轻人颈肩腰腿痛的原因是什么?