linux printf 底层api,printf · Linux C API 参考手册 · 看云
## printf ##
格式化输出数据
### 相关函数 ###
scanf,snprintf
### 表头文件 ###
```
#include
```
### 定义函数 ###
```
int printf(const char *format, ...);
```
### 函数说明 ###
printf()会根据参数format字符串来转换并格式化数据,然后将结果写出到标准输出设备,直到出现字符串结束('\0')为止。参数format字符串可包含下列三种字符类型
1. 一般文本,伴随直接输出。
2. ASCII控制字符,如\t、\n等。
3. 格式转换字符。
格式转换为一个百分比符号(%)及其后的格式字符所组成。一般而言,每个%符号在其后都必需有一printf()的参数与之相呼应(只有当%%转换字符出现时会直接输出%字符),而欲输出的数据类型必须与其相对应的转换字符类型相同。
Printf()格式转换的一般形式如下
```
%(flags)(width)(.prec)type
```
以中括号括起来的参数为选择性参数,而%与type则是必要的。底下先介绍type的几种形式
**整数**
%d 整数的参数会被转成一有符号的十进制数字
%u 整数的参数会被转成一无符号的十进制数字
%o 整数的参数会被转成一无符号的八进制数字
%x 整数的参数会被转成一无符号的十六进制数字,并以小写abcdef表示
%X 整数的参数会被转成一无符号的十六进制数字,并以大写ABCDEF表示浮点型数
%f double 型的参数会被转成十进制数字,并取到小数点以下六位,四舍五入。
%e double型的参数以指数形式打印,有一个数字会在小数点前,六位数字在小数点后,而在指数部分会以小写的e来表示。
%E 与%e作用相同,唯一区别是指数部分将以大写的E 来表示。
%g double 型的参数会自动选择以%f 或%e 的格式来打印,其标准是根据欲打印的数值及所设置的有效位数来决定。
%G 与%g 作用相同,唯一区别在以指数形态打印时会选择%E 格式。
**字符及字符串**
%c 整型数的参数会被转成unsigned char型打印出。
%s 指向字符串的参数会被逐字输出,直到出现NULL字符为止
%p 如果是参数是“void *”型指针则使用十六进制格式显示。
prec 有几种情况
1. 正整数的最小位数。
2. 在浮点型数中代表小数位数
3. 在%g 格式代表有效位数的最大值。
4. 在%s格式代表字符串的最大长度。
5. 若为×符号则代表下个参数值为最大长度。
width为参数的最小长度,若此栏并非数值,而是*符号,则表示以下一个参数当做参数长度。
flags 有下列几种情况
```
#NAME?
```
\+ 一般在打印负数时,printf()会加印一个负号,整数则不加任何负号。此旗标会使得在打印正数前多一个正号(+)。
\# 此旗标会根据其后转换字符的不同而有不同含义。当在类型为o 之前(如%#o),则会在打印八进制数值前多印一个o。
而在类型为x 之前(%#x)则会在打印十六进制数前多印’0x’,在型态为e、E、f、g或G 之前则会强迫数值打印小数点。在类型为g 或G之前时则同时保留小数点及小数位数末尾的零。
0 当有指定参数时,无数字的参数将补上0。默认是关闭此旗标,所以一般会打印出空白字符。
### 返回值 ###
成功则返回实际输出的字符数,失败则返回-1,错误原因存于errno中。
### 范例 ###
```
#include
main()
{
int i = 150;
int j = -100;
double k = 3.14159;
printf(“%d %f %x\n”,j,k,i);
printf(“%2d %*d\n”,i,2,i); /*参数2 会代入格式*中,而与%2d同意义*/
}
```
### 执行 ###
```
-100 3.14159 96
150 150
```
linux printf 底层api,printf · Linux C API 参考手册 · 看云相关推荐
- linux sendto 源码,sendto · Linux C API 参考手册 · 看云
## sendto ## 经socket传送数据 ### 相关函数 ### send , sendmsg,recv , recvfrom , socket ### 表头文件 ### ``` #incl ...
- linux fcntl注销信号,fcntl · Linux C API 参考手册 · 看云
## fcntl ## 文件描述词操作 ### 相关函数 ### open,flock ### 表头文件 ### ``` #include #include ``` ### 定义函数 ### ``` ...
- 【C#】什么是Win32 API,为什么使用,参考手册
前言 作为Microsoft 32位平台的应用程序编程接口,Win32 API是从事Windows应用程序开发所必备的. Win32 API作为 Microsoft 32位平台(包括:Windows ...
- 致远 linux 视频,致远G6-V5集群部署参考手册-Linux版.pdf
致远G6-V5 集群部署参考手册-Linux 版 By Yang Fangchao 2016-08-17 20:12:03 Version ID:doc-g6-v570 前言 5 第一章 环境准备 6 ...
- api0.php,API接口 · HisiPHP V2开发手册 · 看云
>[info] 快速导航 [TOC] ## 接口配置 在使用API之前你需要在后台做一个简单的API配置,如下图: ![](https://box.kancloud.cn/e41db0b7698 ...
- linux窗帘文件夹命令,窗帘面板和电机 · 控客智能家居 Linux SDK 使用手册 · 看云...
## 开关停 | OPEN | CLOSE | STOP | | --- | --- | --- | | 开 | 关 | 停 | ### 请求 ```json { "nodeId" ...
- mysql c api 函数 linux下 mysql_query_Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据...
标签: Title:Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据 --2013-10-11 11:57 #include #include #in ...
- libnuma详解-A NUMA API for LINUX
参考资料 http://developer.amd.com/wordpress/media/2012/10/LibNUMA-WP-fv1.pdf numa(3) - Linux manual page ...
- api有哪些 javasocket_简单hello/hi程序、分析及Java Socket API与Linux Socket API对比
1.Socket 定义 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开.读写和关闭等操作.套接字允许应用程序将I/O插入到网络中,并与网络中的其他应 ...
最新文章
- module ‘tensorflow‘ has no attribute ‘Tensor‘
- C++获取当前进程的进程号方法
- 一些比较少用但比较有用的linux命令备忘
- 线性二次型最优控制器LQR设计原理以及matlab实现
- 关于码云的一些基本知识_关于葡萄酒,你必须知道的一些基础知识
- LDA中文文本挖掘代码分享
- Windows环境搭建Red5流媒体服务器指南
- 白帽子讲Web安全(纪念版)笔记
- 闲时看看, 比较有益的文章地址
- safari 插件(如Xmarks)的设置、登陆、禁用等
- 某项目的双代号网络图如下所示_某工程项目的双代号网络计划如下图所示(时间单位:月)。...
- 熵值权重法matlab程序,熵值法确定权重原理及Matlab实现
- CyberArk被评为2021年Gartner特权访问管理魔力象限的领导者
- 前端table打印被截断,如何给每一页都增加表头
- NEXTCHIP,北京冠宇铭通科技,祝中国人民早日战胜新冠病毒疫情
- 9种AR/VR交互方式解读,让你更加了解透彻AR/VR
- 【图形学】18 光照模型(三、镜面反射的Shader实现)
- ubuntu14.04下推荐的工具及插件
- 华为路由器可以连接几个设备_华为如何设置连接两个无线路由器
- 如何减少上下文切换?
热门文章
- 百度地图API的第一次接触
- 【转】Update: Android.mk 中的 LOCAL_SRC_FILES, LOCAL_C_INCLUDES
- 『C#基础』C#导出Excel
- 三个javascript动态输入列表
- C++单元测试工具CppUnit使用简介 【转载】
- HDU2075 A|B?【水题】
- 趣味程序之打印字符图案系列
- ubuntu 下的文件校验(md5、sha256)
- 基于深度学习的目标检测(object detection)—— rcnn、fast-rcnn、faster-rcnn、SSD、YOLO
- 算法 Tricks(四)—— 获取一个数二进制形式第一个不为 0 的位置