3.1 printf函数

①printf函数显示格式串的内容,并可在该串中指定位置插入值。调用printf函数必须提供格式串,格式串后面的参数是需要在显示时插入到该串中的值。 eg

printf (格式串, 表达式1, 表达式2, ...);

显示的值可以是常量,变量,表达式,一次打印的值的个数没有限制。

②格式串包含普通字符和转换说明,转换说明表示打印过程中待填充的值的占位符。转换说明以 % 开头, % 后面的信息指定了从内部形式(二进制)转换为打印形式(字符)的方法;

③格式串中的转换说明要用待显示的值来替换,普通字符和在字符串中出现的那样显示;

④printf()四种用法  ------ 将变量内容输出到显示屏上

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

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

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

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

⑤转换说明可以用 %m.pX格式或者 %-m.pX格式。m, p 是整数, X是字母, 省略p时要连同小数点一起省略。

⑥转换说明中,m (最小字段宽度)指定了要显示的最少字符数量,字符数少于m则右对齐(值前面放置额外空格),在 m 前加上 - 为左对齐;

⑦转换说明中,p(精度)依赖于 X(转换说明符)

d ---- 十进制整数。p指明待显示的数字的最少个数(必要时在数前加上额外的零),不是小                    数点后的位数,区别于%e, 省略p默认位数为1;

e ---- 指数(科学计数法)形式的浮点数。p 指明小数点后数字个数,默认为6位,p为0则不                    显示小数点;

f ---- 定点十进制浮点数。p 指明小数点后数字个数,默认为6位,p为0则不显示小数点;

g ---- 指数形式或定点十进制形式的浮点数,形式选择根据数的大小决定;

⑧转义序列:eg. 警报符: \a                  产生一声鸣响

回退符: \b                 使光标从当前位置回退一个位置

换行符: \n                 使光标跳到下一行起始位置

水平制表符: \t           把光标移到下一个制表符的位置

\"                                 字符 " 标记字符串的开始与结束,它不能出现在没有使用                                                                 上述转义序列的字符串内。eg.

printf("\"Hello!\"")

输出结果为 "Hello!"

⑨不能在字符串中只放置单独一个字符 \ ,编译器会认为他是一个转义序列的开始。为了显示单独一个 \ ,需要在字符串中放置两个 \ ;   eg

printf("\\")

⑩printf函数在格式串中遇到两个连续的 % ,那么它将显示出一个 % ;

3.2  scanf函数

①scanf函数格式串也包括转换说明和普通字符,scanf函数和转换说明的用法和printf函数转换说明的用法本质上一样的;

②使用scanf函数时,必须检查转换说明的数量是否与输入变量的数量相匹配,并检查每个转换是否适合相对应的变量;

③记得把取地址符 & 放在每个变量的前面;

④调用scanf函数读数据有效但不理想,更多采用字符格式读取所有数据,然后再把它们转换成数值形式;

⑤scanf()用法  通过键盘将数据输入到变量中

(1)scanf("输入控制符", 输入参数);

功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数                             的值为地址的变量中;

(2)scanf("非输入控制符 输入控制符", 输入参数);

功能:将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数                             的值为地址的变量中,非输入控制符必须原样输入;

⑥scanf函数本质上是一种“模式匹配”函数,试图把输入的字符串与转换说明相匹配。scanf函数从左边开始处理字符串中的信息。对于格式串中的每一个转换说明,scanf函数从输入的数据中定位适当类型的项,并在必要时跳过空格,在遇到不属于此项的字符时停止;读入数据成功,scanf函数则继续处理,读入数据失败,scanf函数不再查看格式串剩余部分;

⑦scanf函数中,%e, %f, %g是可以互换的,在用于浮点数时遵循相同规则;

⑧格式串中的普通字符:

(1)空白字符:格式串中遇到一个或多个连续空白字符时,scanf函数从输入中重复读空白字                                   符直到遇到一个非空白字符为止,格式串中空白字符数量无关紧要,格式串                                     中的一个空白字符可以与输入中任意数量空白字符相匹配,包括零个格式串                                     中包含空白字符并不意味着输入中必须包含空白字符;

(2)其他字符:格式串中有非空白字符时,scanf函数将把它与下一个输入字符进行比较。如                                  果两个字符相匹配,那么scanf函数会放弃输入字符而继续处理格式串。如果                                    两个字符不匹配,scanf函数会把不匹配的字符放回输入中,然后异常退出,                                    不会进一步处理格式串或者从输入中读取字符;

eg.假设格式串是%d/%d,  输入为·5/·96则可读取,输入为·5·/·96在第二个空格时停止;

⑨printf函数和scanf函数易混淆的点:

常见错误(1):printf函数调用时在变量前放置&;

常见错误(2):除了转换说明,格式串常常不要包含字符,因为scanf函数在寻找数据时通                                       常会跳过空白字符;

常见错误(3):printf函数通常以 \n 结尾, 但在scanf函数格式串末尾放置 \n 通常是一个坏                                     主意;

printf函数 + scanf函数相关推荐

  1. C语言printf与scanf函数

    在程序开发中,经常会进行一些输入.输出操作 C语言中,提供了printf()和scanf()函数 Printf()函数,用于向控制台输出字符 Scanf()函数,用于读取用户的输入 Printf()函 ...

  2. c语言程序输入与输出函数,C语言printf()和scanf()函数?其实就是输入输出

    在解释这两个函数之前,为了方便大家更容易理解,我们先来讲讲下面的这幅图. 这个图中的例子其实很简单,我们就是把题目通过输入设备(例如键盘鼠标)传输到计算机中,然后让计算机进行运算得出结果,再然后把结果 ...

  3. C语言输入和输出(printf和scanf函数、putchar和getchar函数)

    printf和scanf函数.putchar和getchar函数 输入输出操作都是由C标准函数库中的函数来实现的,要在程序文件开头用预处理指令#include把有关文件放在本程序中#include&l ...

  4. IOS学习笔记07---C语言函数-scanf函数

    2013/8/7 IOS学习笔记07---C语言函数-scanf函数 ------------------------------ qq交流群:创梦技术交流群:251572072            ...

  5. gets 函数 - fgets 函数 - scanf 函数 - gets_s 函数 - 字符串最后一个单词的长度

    gets 函数 - fgets 函数 - scanf 函数 - gets_s 函数 - 字符串最后一个单词的长度 1. gets 函数 在 C 语言中,while 循环的功能和它在其他语言中一样.它首 ...

  6. scanf 接收 空格 输入_【C语言】- printf 和scanf 函数详解!

    一.printf函数 这是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>,使用它可以向标准输出设备(比如屏幕)输出数据. 1.用法 1> p ...

  7. C语言scanf输入a3,【C语言】04 printf和scanf函数

    1.printf函数 这是在stdio.h中声明的一个函数,因此使用前必须加入#include ,使用它可以向标准输出设备输出数据 1.用法 1> printf(字符串) printf(&quo ...

  8. C语言scanf函数详细解释,[转载]C语言printf和scanf函数详细用法

    Printf和Scan函数的使用方法 一 printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出 信息.在编写程序时经常会用到此函数.printf()函数的调用格式为: prin ...

  9. STM32L152RC 在keil4中使用printf()和scanf() 函数

    1.在keil中配置使用Micro LIB,如下图 2.配置USART模块 void SYS_USARTInit(void) { static USART_InitTypeDef USART_Init ...

最新文章

  1. MySQL 微秒慢查询补丁
  2. 【号外】来人鸭~ 本公众号纳新啦~
  3. poj1386(判断一个有向图是否存在欧拉回路)
  4. Tensorflow【实战Google深度学习框架】TensorFlow模型的保存与恢复加载
  5. 【mongoDB实战】mongo对某个键添加索引
  6. 99%的人都会用错或者不会看的N折验证
  7. 集合元素处理(传统方式)
  8. linux安装python3教程_linux下安装python3和对应的pip环境教程详解
  9. 文件指针创建失败!File *fp失败
  10. 2016年4月 TIOBE 编程语言排行榜
  11. Java Long类的valueOf()方法及示例
  12. (软件工程复习核心重点)第六章实现和测试-第七节:黑盒测试
  13. 云小课 | 守护网络安全不是问题,iptables的四表五链为你开启“八卦阵”
  14. 12muduo_base库源码分析(三)
  15. java基础-- 集合框架入门 及 List集合
  16. 第5章分布式系统模式 Broker(代理程序)
  17. svn之删除文件并释放空间
  18. 用Android studio搭建沃商店SDK任意支付的配置
  19. Vue系列之-Idea进行Vue前端调试
  20. 地理加权回归学习记录

热门文章

  1. 【腾讯优测干货分享】Android5.0-6.0双卡适配指南
  2. php常见留言板框架,留言板-PHP框架-51CTO博客
  3. 3D建模师能做什么?游戏动漫电影统统不在话下,前景好薪资还高
  4. ssm毕设项目焦作旅游网站q5msq(java+VUE+Mybatis+Maven+Mysql+sprnig)
  5. 设计模式之适配器模式(一)
  6. C/C++面试笔试详细总结—基本概念及其它问答题
  7. 支付宝错误 ALIN10146 排查
  8. 微软MS08-067漏洞,小白必看,超详细!!!
  9. Hello, Cocos2d-x
  10. 基于spark的流式数据处理—流计算处理流程以及应用场景