输入输出函数(printf 和 scanf)是C语言中非常重要的两个函数,也是学习C语言必学的两个函数。在C语言程序中,几乎没有一个程序不需要这两个函数,尤其是输出函数(printf),所以这两个函数必须要掌握。

如果在程序中要使用 printf 或者 scanf,那么就必须要包含头文件 stdio.h。因为这两个函数就是包含在该头文件中的。

输出函数的功能是将程序运行的结果输出到屏幕上,而输入函数的功能是通过键盘给程序中的变量赋值。可以说输入输出函数是用户和计算机交互的接口。其中 printf 的功能很强大,用法很灵活,比较难掌握;而 scanf 的用法相对比较固定,但也有很多需要注意的地方。

本节我们先讲解 printf 的用法,稍后再讲解 scanf。

printf 的格式

printf 函数的原型为:

# include <stdio.h>
int printf(const char *format, ...);

在讲每一个函数的时候都会先把它的函数原型写出来,这个原型你们现在看不懂不要紧,等到学完C语言之后再来看这个原型就会发现它是很有参考意义的!它对深刻理解函数有着很大的价值。

printf 的格式有四种:

1) printf("字符串\n");

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. printf("Hello World!\n"); // \n表示换行
  5. return 0;
  6. }

其中\n表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中 n 是“new line”的缩写,即“新的一行”。

此外需要注意的是,printf 中的双引号和后面的分号必须是在英文输入法下。双引号内的字符串可以是英文,也可以是中文。

2) printf("输出控制符",输出参数);

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 10;
  5. printf("%d\n", i); /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/
  6. return 0;
  7. }

这句话的意思是将变量 i 以十进制输出。

那么现在有一个问题:i 本身就是十进制,为什么还要将 i 以十进制输出呢?

因为程序中虽然写的是 i=10,但是在内存中并不是将 10 这个十进制数存放进去,而是将 10 的二进制代码存放进去了。计算机只能执行二进制 0、1 代码,而 0、1 代码本身并没有什么实际的含义,它可以表示任何类型的数据。所以输出的时候要强调是以哪种进制形式输出。所以就必须要有“输出控制符”,以告诉操作系统应该怎样解读二进制数据。

如果是%x就是以十六进制的形式输出,要是%o就是以八进制的形式输出,大家自己试一下。

3) printf("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …);

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 10;
  5. int j = 3;
  6. printf("%d %d\n", i, j);
  7. return 0;
  8. }

输出控制符 1 对应的是输出参数 1,输出控制符 2 对应的是输出参数 2……编译、链接、执行后我们看一下输出结果:
10 3

注意一下,为什么 10 和 3 之间有一个空格?因为上面 %d 和 %d之间有空格,printf 中双引号内除了输出控制符和转义字符\n外,所有其余的普通字符全部都原样输出。比如:

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 10;
  5. int j = 3;
  6. printf("i = %d, j = %d\n", i, j);
  7. return 0;
  8. }

这时我们再编译、链接、执行一下:
i = 10, j = 3

i=,、空格和j=全都原样输出了。此外需要注意的是:“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。

4) printf("输出控制符 非输出控制符",输出参数);

这实际上就是上面那个例子。这时候会有一个问题:到底什么是“输出控制符”,什么是“非输出控制符”?很简单,凡是以%开头的基本上都是输出控制符。

输出控制符

常用的输出控制符主要有以下几个:

控制符 说明
%d 按十进制整型数据的实际长度输出。
%ld 输出长整型数据。
%md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。
%u 输出无符号整型(unsigned)。输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。但编程的时候最好不要这么写,因为这样要进行一次转换,使 CPU 多做一次无用功。
%c 用来输出一个字符。
%f 用来输出实数,包括单精度和双精度,以小数形式输出。不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。
%.mf 输出实数时小数点后保留 m 位,注意 m 前面有个点。
%o 以八进制整数形式输出,这个就用得很少了,了解一下就行了。
%s 用来输出字符串。用 %s 输出字符串同前面直接输出字符串是一样的。但是此时要先定义字符数组或字符指针存储或指向字符串,这个稍后再讲。
%x(或 %X 或 %#x 或 %#X) 以十六进制形式输出整数,这个很重要。

%x、%X、%#x、%#X 的区别

一定要掌握 %x(或 %X 或 %#x 或 %#X),因为调试的时候经常要将内存中的二进制代码全部输出,然后用十六进制显示出来。下面写一个程序看看它们四个有什么区别:

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 47;
  5. printf("%x\n", i);
  6. printf("%X\n", i);
  7. printf("%#x\n", i);
  8. printf("%#X\n", i);
  9. return 0;
  10. }

在 VC++ 6.0 中的输出结果:
2f
2F
0x2f
0X2F

从输出结果可以看出:如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的;如果加一个#,就以标准的十六进制形式输出。

最好是加一个#,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!总之,不加#容易造成误解。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。而且%#x%#X中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。

如何输出 %d、\ 和双引号

printf 中有输出控制符%d,转义字符前面有反斜杠\,还有双引号。那么大家有没有想过这样一个问题:怎样将这三个符号通过 printf 输出到屏幕上呢?

要输出%d只需在前面再加上一个%,要输出\只需在前面再加上一个\,要输出双引号也只需在前面加上一个\即可。程序如下:

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. printf("%%d\n");
  5. printf("\\\n");
  6. printf("\"\"\n");
  7. return 0;
  8. }

在 VC++ 6.0 中的输出结果是:
%d
\
""

小结

printf 是C语言中非常重要的一个函数。经过上面的学习我们发现,其实它并不难。只要多编程多练习,很快就能掌握。

其次学完本节之后要知道为什么需要“输出控制符”。因为计算机中所有的数据都是二进制 0、1 代码,所以输出的时候要用“输出控制符”告诉计算机以什么形式将二进制数据显示出来。

输出控制符中,%d、%f、%s、%c 是最常用的,它们分别是输出整数、实数、字符串和字符的控制符。%.mf 虽然用得不多,但一定要重视。

最后 %x、%X、%#x、%#X 四种用法的区别只需要了解一下即可。

printf用法大全,C语言printf格式控制符一览表

C语言中文网推出辅导班啦,包括「C语言辅导班、C++辅导班、算法/数据结构辅导班」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习。QQ在线,随时响应!

输入输出函数(printf 和 scanf)是C语言中非常重要的两个函数,也是学习C语言必学的两个函数。在C语言程序中,几乎没有一个程序不需要这两个函数,尤其是输出函数(printf),所以这两个函数必须要掌握。

如果在程序中要使用 printf 或者 scanf,那么就必须要包含头文件 stdio.h。因为这两个函数就是包含在该头文件中的。

输出函数的功能是将程序运行的结果输出到屏幕上,而输入函数的功能是通过键盘给程序中的变量赋值。可以说输入输出函数是用户和计算机交互的接口。其中 printf 的功能很强大,用法很灵活,比较难掌握;而 scanf 的用法相对比较固定,但也有很多需要注意的地方。

本节我们先讲解 printf 的用法,稍后再讲解 scanf。

printf 的格式

printf 函数的原型为:

# include <stdio.h>
int printf(const char *format, ...);

在讲每一个函数的时候都会先把它的函数原型写出来,这个原型你们现在看不懂不要紧,等到学完C语言之后再来看这个原型就会发现它是很有参考意义的!它对深刻理解函数有着很大的价值。

printf 的格式有四种:

1) printf("字符串\n");

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. printf("Hello World!\n"); // \n表示换行
  5. return 0;
  6. }

其中\n表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中 n 是“new line”的缩写,即“新的一行”。

此外需要注意的是,printf 中的双引号和后面的分号必须是在英文输入法下。双引号内的字符串可以是英文,也可以是中文。

2) printf("输出控制符",输出参数);

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 10;
  5. printf("%d\n", i); /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/
  6. return 0;
  7. }

这句话的意思是将变量 i 以十进制输出。

那么现在有一个问题:i 本身就是十进制,为什么还要将 i 以十进制输出呢?

因为程序中虽然写的是 i=10,但是在内存中并不是将 10 这个十进制数存放进去,而是将 10 的二进制代码存放进去了。计算机只能执行二进制 0、1 代码,而 0、1 代码本身并没有什么实际的含义,它可以表示任何类型的数据。所以输出的时候要强调是以哪种进制形式输出。所以就必须要有“输出控制符”,以告诉操作系统应该怎样解读二进制数据。

如果是%x就是以十六进制的形式输出,要是%o就是以八进制的形式输出,大家自己试一下。

3) printf("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …);

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 10;
  5. int j = 3;
  6. printf("%d %d\n", i, j);
  7. return 0;
  8. }

输出控制符 1 对应的是输出参数 1,输出控制符 2 对应的是输出参数 2……编译、链接、执行后我们看一下输出结果:
10 3

注意一下,为什么 10 和 3 之间有一个空格?因为上面 %d 和 %d之间有空格,printf 中双引号内除了输出控制符和转义字符\n外,所有其余的普通字符全部都原样输出。比如:

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 10;
  5. int j = 3;
  6. printf("i = %d, j = %d\n", i, j);
  7. return 0;
  8. }

这时我们再编译、链接、执行一下:
i = 10, j = 3

i=,、空格和j=全都原样输出了。此外需要注意的是:“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。

4) printf("输出控制符 非输出控制符",输出参数);

这实际上就是上面那个例子。这时候会有一个问题:到底什么是“输出控制符”,什么是“非输出控制符”?很简单,凡是以%开头的基本上都是输出控制符。

输出控制符

常用的输出控制符主要有以下几个:

控制符 说明
%d 按十进制整型数据的实际长度输出。
%ld 输出长整型数据。
%md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出。
%u 输出无符号整型(unsigned)。输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。但编程的时候最好不要这么写,因为这样要进行一次转换,使 CPU 多做一次无用功。
%c 用来输出一个字符。
%f 用来输出实数,包括单精度和双精度,以小数形式输出。不指定字段宽度,由系统自动指定,整数部分全部输出,小数部分输出 6 位,超过 6 位的四舍五入。
%.mf 输出实数时小数点后保留 m 位,注意 m 前面有个点。
%o 以八进制整数形式输出,这个就用得很少了,了解一下就行了。
%s 用来输出字符串。用 %s 输出字符串同前面直接输出字符串是一样的。但是此时要先定义字符数组或字符指针存储或指向字符串,这个稍后再讲。
%x(或 %X 或 %#x 或 %#X) 以十六进制形式输出整数,这个很重要。

%x、%X、%#x、%#X 的区别

一定要掌握 %x(或 %X 或 %#x 或 %#X),因为调试的时候经常要将内存中的二进制代码全部输出,然后用十六进制显示出来。下面写一个程序看看它们四个有什么区别:

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. int i = 47;
  5. printf("%x\n", i);
  6. printf("%X\n", i);
  7. printf("%#x\n", i);
  8. printf("%#X\n", i);
  9. return 0;
  10. }

在 VC++ 6.0 中的输出结果:
2f
2F
0x2f
0X2F

从输出结果可以看出:如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的;如果加一个#,就以标准的十六进制形式输出。

最好是加一个#,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!总之,不加#容易造成误解。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。而且%#x%#X中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。

如何输出 %d、\ 和双引号

printf 中有输出控制符%d,转义字符前面有反斜杠\,还有双引号。那么大家有没有想过这样一个问题:怎样将这三个符号通过 printf 输出到屏幕上呢?

要输出%d只需在前面再加上一个%,要输出\只需在前面再加上一个\,要输出双引号也只需在前面加上一个\即可。程序如下:

  1. # include <stdio.h>
  2. int main(void)
  3. {
  4. printf("%%d\n");
  5. printf("\\\n");
  6. printf("\"\"\n");
  7. return 0;
  8. }

在 VC++ 6.0 中的输出结果是:
%d
\
""

小结

printf 是C语言中非常重要的一个函数。经过上面的学习我们发现,其实它并不难。只要多编程多练习,很快就能掌握。

其次学完本节之后要知道为什么需要“输出控制符”。因为计算机中所有的数据都是二进制 0、1 代码,所以输出的时候要用“输出控制符”告诉计算机以什么形式将二进制数据显示出来。

输出控制符中,%d、%f、%s、%c 是最常用的,它们分别是输出整数、实数、字符串和字符的控制符。%.mf 虽然用得不多,但一定要重视。

最后 %x、%X、%#x、%#X 四种用法的区别只需要了解一下即可。

printf用法大全,C语言printf格式控制符一览表printf用法大全,C语言printf格式控制符一览表相关推荐

  1. c语言putchar和scanf,C语言学习——getchar()、putchar()、scanf和printf用法

    C语言学习--getchar().putchar().scanf和printf用法 在C语言中,数据的输入输出是利用系统函数来实现的.设计人员只要调用相关的系统函数,就可以完成各种数据的输入输出工作. ...

  2. scanf和printf在c语言中的作用,C语言中的scanf与printf

    最初学习C语言程序设计时,经常需要通过键盘交互方式请用户输入内容,并需要将用户计算的结果在屏幕上输出.为实现这样的操作,C语言提供了scanf与printf两个函数,使用它们之前,一般需要包含stdi ...

  3. c语言汉字的存放和输出,怎么在C语言里用printf输出一个中文

    一般情况下,应用程序采用的字符集为gbk, gb2312,该字符集中一个汉字由两个字节组成,所以在普通的C语言中,汉字是按字符串进行存储和输出的.(另:还有utf8字符集,一个汉字由三个字节组成,详情 ...

  4. C语言字符意思 char,C语言基本类型字符型(char)用法介绍

    <C语言基本类型字符型(char)用法介绍>由会员分享,可在线阅读,更多相关<C语言基本类型字符型(char)用法介绍(6页珍藏版)>请在人人文库网上搜索. 1.C语言基本类型 ...

  5. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  6. 巧用c语言宏定义实现自动注释调试代码,C语言宏定义中的特殊用法

    C宏定义中的特殊用法 在分析一些C源码时,经常会遇到各种宏定义操作,本文即总结一下C语言宏定义中常见的预定义宏.调试宏:宏的条件编译用法及特殊的宏关键字用法. #undef 限定宏的作用域 一般来讲宏 ...

  7. C语言Double的作用,C语言double和float 实例分析用法

    C语言double和float 实例分析用法 C语言double和float 实例分析用法 小数也称实数或浮点数.例如,0.0.75.0.4.023.0.27.-937.198 都是合法的小数.这是常 ...

  8. c语言float的使用,C语言double和float实例分析用法

    C语言double和float 实例分析用法 C语言double和float 实例分析用法 小数也称实数或浮点数.例如,0.0.75.0.4.023.0.27.-937.198 都是合法的小数.这是常 ...

  9. C语言删掉无关变量无输出,C语言变量类型与输出控制用法实例教程

    本文实例讲述了C语言变量类型与输出控制用法,有助于读者很好的对其进行总结与归纳.该实例分享给大家供大家参考借鉴之用.具体如下: 完整实例代码如下: /************************* ...

  10. 国开题库c语言,C语言-程序设计-阅读程序题库.资料大全及其答案.doc

    C语言-程序设计-阅读程序题库.资料大全及其答案.doc 阅读程序题[2.1]以下程序的输出结果是 . mainD float a:a1/100000000:printf"g",a ...

最新文章

  1. JS控制图片显示的大小(图片等比例缩放)
  2. 深入分析:12C ASM Normal冗余中PDB文件块号与AU关系与恢复
  3. 华中C语言程序简答题,华中科技大学0911年C语言程序设计试卷.doc
  4. Android程序员视角的Apple发布会
  5. 【机器学习实战】垃圾分类快速理解机器学习中的朴素贝叶斯(Naive Bayes)
  6. 小程序键盘遮挡输入框情况之一
  7. Android详细刷机教程
  8. MySQL图形化性能监控工具MySQLMTOP详解
  9. 对称密钥和非对称密钥
  10. 【包邮送书活动】20210928期-开奖通知
  11. 2-5暴力破解防范措施和防范误区
  12. 网线水晶头接法(附图说明)
  13. mysql limit会扫描全表_为什么用了limit还会进行全表扫描?
  14. CAD批量画八边形风机基础平台
  15. 分销的概念、本质、模式
  16. 泰森多边形(Voronoi diagram)
  17. 使用git命令——分支切换
  18. 大道至简第七、八章读后感
  19. 原神ps无法登录服务器未响应,原神公测常见问题与解答,包括配置需求、数据互通问题...
  20. Hi3798日志分析-海思

热门文章

  1. [SMOJ1777]铺地砖
  2. 搜狗搜索日志分析系统
  3. Docker开启Remote API 访问 2375端口
  4. Python实现复杂规则游戏抽奖模拟器第一期:间接学习random模块函数
  5. 吐血整理 | 快速学习大厂们的软件案例经验
  6. css 粘性布局吸顶position:sticky与js监听滚动手动实现
  7. VistaPanel面板主机使用Cname解析域名并使用Cf免费CDN与SSL
  8. 改变MFC对话框背景色、控件内的字体颜色和背景色
  9. windows 电源管理之禁用睡眠脚本
  10. PCB设计中的邮票孔封装如何制作?