文档章节

1. printf 的用法

 小清年
发布于 2014/05/11 18:42
字数 716
阅读 6
收藏 0
点赞 0
评论 0

1. printf 的用法

1.1 printf函数的定义如下所示:
int printf(char *format, arg1, arg2, ...);
该函数是一个可变参数函数,在输出格式 format 的控制下,将其参数进行转换与格式化,并在标准输出设备上打印出来。它的返回值为打印的字符数。
 
格式化字符串(format)包含两部分内容:普通字符和转换说明。普通字符原样输出,转换字符以百分号(%)开始,后面是若干个转换字符,例如:
int a = 100;
printf("|%5d|",a);
该程序输出如下所示:|  100|,为了方便查看输出结果,我们在两边添加了竖线,我们看到输出字符占5个字符宽度,当前a是3个字符宽度,还有两个左边使用空格补齐。
转换说明的通用格式是:
%m.pX或者是%-m.pX,m指定了最小字段宽度,p代表精度,X代表进行那种转换,例如,数值转换的 d、e、f、g等。负号代表左对齐。
 
在字符%和转换字符中间可能依次包含下列组成部分:
1. 负号, 输出结果右对齐。
2. 数值, 用于指定最小字段宽度。
3. 小数点, 用于将字段宽度和精确度分开。
4. 数值, 用于指定精确度。
例如:
    float f = 123.456;
    printf("|%-10.4f|",f);
该程序的输出结果为:|123.4560  |
下表是转换字符说明:

下列代码演示了转换字符的用法:
#include <stdio.h>
int main(void) {
            // 1. 十进制整型
            int a = 100;
            printf("a=%d\n", a);
            // 2. 八进制整型
            int b = 200;
            printf("b=%o\n", b);
            // 3. 十六进制整型
            int c = 300;
            printf("c=%x\n", c);
            // 4. 无符号十进制
            unsigned int e = 100;
            printf("e=%u\n", e);
            int e1 = -100;
            printf("e1=%d\n", e1);
            // 5. 单个字符
            char c1 = 'A';
            printf("c1=%c\n", c1);
            // 6. 字符串
            char *ch = "abcd";
            printf("ch=%s\n", ch);
            // 7. double 类型
            double d1 = 123.456;
            printf("d1=%f\n", d1);
            // 8. double 类型,科学计数法
            printf("d1=|%10.3e|\n", d1);
            // 9. double 类型,科学计数法 g
            double d2 = 1234567.456;
            printf("d2=|%g|\n", d2);
            // 10. 指针类型
            int *pi = &a;
            printf("pi=%p\n", pi);
            // 11. %
            printf("%%%%");
}
 
程序的输出结果如下所示:
a=100
b=310
c=12c
e=100
e1=-100
c1=A
ch=abcd
d1=123.456000
d1=| 1.235e+02|
d2=|1.23457e+06|
pi=0x7fff5fbff8ac
%%
 
还有一些特殊的字符,使用printf输出时只是表示某种含义,而字符本身并不输出,这些字符我们把它们成为转义字符。例如,换行符“\n”水平制表符“\t”等。
下面的程序输出了某个人的信息,其中使用了\n 和 \t
void testPrintf3(){
    printf("编号\t姓名\t年龄\n");
    printf("01\ttom\t20");
}
程序输出结果为:
编号        姓名     年龄
01            tom       20
C语言中的转义字符,如下表所示:

该博客教程视频地址:http://geek99.com/node/962

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 70
码字总数 0
作品 0
门头沟
小蚂蚁学习C语言(5)——C语言两个基本的输入输出函数printf()和scanf()

漫长的学习铺垫之后,终于到了学习C语言的正文阶段,我怀着无比鸡冻的心情学习了两个函数=_= 基本的输入和输出函数的用法 printf(); //输出 scanf(); //输入 我靠,听老师说,C语言基本上要学...

嗜学如命的小蚂蚁 ⋅ 2015/12/01 ⋅ 0

golang中strings包用法

package main import ("fmt""strings"//"unicode/utf8") func main() {fmt.Println("查找子串是否在指定的字符串中")fmt.Println(" Contains 函数的用法")fmt.Println(strings.Contains("sea......

ethantonylam ⋅ 2016/05/25 ⋅ 0

PythoidC

PythoidC是中国人研发的最方便的C语言开发工具,实现了易如Python快如C的最高境界: 1、免除大括号{}及行尾分号; 统一用缩进表示代码块(支持自动批量调整缩进) 2、不必打开DOS窗口(控制台...

匿名 ⋅ 2010/03/07 ⋅ 0

C语言位运算符及常见用法

C语言位运算符及常见用法 Mindy2017-03-1232 阅读 用法运算符C语言 一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 按位与运算 按位与运算符...

Mindy ⋅ 2017/03/12 ⋅ 0

C语言宏定义中#用法

宏中"#"和"##"的用法 一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #i nclude<cstdio> #i nclude<climits> using namespace std; #define STR(s) #s ...

曾赛 ⋅ 2011/07/06 ⋅ 0

scanf()函数的用法和实践

scanf()函数的用法和实践 摘要: 本文阐述了基于ANSI,Win 95,Win NT上的 C/C++语言中scanf()函数的用法,以及在实际使用中常见错误及对策。 关键词: scanf() 一、 序言 在CSDN论坛的C/C++...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

十六、预处理指令2-条件编译

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 上一篇已经介绍了预...

长平狐 ⋅ 2013/03/28 ⋅ 0

golang学习的点点滴滴:指针,地址,形参,实参

学习Go语言的过程中,会发现它的指针,地址,还有函数参数跟平常我们理解的不太一样. 上代码: package main //学习指针用法 import ( "fmt" ) func main() { var i int; // i 的类型是int型 va...

亓斌哥哥 ⋅ 2014/09/29 ⋅ 0

五、printf和scanf函数

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 一、printf函数 这...

长平狐 ⋅ 2013/03/28 ⋅ 0

C语言中函数strcpy ,strncpy ,strlcpy的用法

C语言中函数strcpy ,strncpy ,strlcpy的用法[日期:2012-06-03] 来源:Linux社区 作者:tigerjb [字体:大 中 小] 1>strncpy 原型:extern char strncpy(char dest, char *src, int n); 用法......

MtrS ⋅ 2016/12/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

Nginx + uwsgi @ubuntu

uwsgi 安装 sudo apt-get install python3-pip # 注意 ubuntu python3默认没有安装pippython3 -m pip install uwsgi 代码(test.py) def application(env, start_response): start_res......

袁祾 ⋅ 昨天 ⋅ 0

版本控制工具

CSV , SVN , GIT ,VSS

颖伙虫 ⋅ 昨天 ⋅ 0

【2018.06.19学习笔记】【linux高级知识 13.1-13.3】

13.1 设置更改root密码 13.2 连接mysql 13.3 mysql常用命令

lgsxp ⋅ 昨天 ⋅ 0

LVM

LVM: 硬盘划分分区成物理卷->物理卷组成卷组->卷组划分逻辑分区。 1.磁盘分区: fdisk /dev/sdb 划分几个主分区 输入t更改每个分区类型为8e(LVM) 使用partprobe生成分区的文件:如/dev/sd...

ZHENG-JY ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部