格式化输出说的是printf, 形式主要是:   printf(格式串 + 表达式1,表达式2, ...);

格式串主要包括普通字符和转换说明%d, %f, 所谓转换说明,如%d, 就是指printf

函数把int整数型值从二进制转换成十进制数字组成的字符串,%f则是对float浮点型

进行类似操作

实例1

按 月/日/年 的格式输入日期,按 年/月/日 输出日期

 1 # include <stdio.h>                            // <stdio.h>是标准输入/输出函数库
 2
 3 int main(void)                                 // int表明main函数返回的是整数值
 4 {
 5     int month, day, year;                      // 声明3个整数型变量
 6
 7     printf("Enter a date(mm/dd/yyyy):");       // 每个语句以 ; 结尾, 由于开头的预指令只占据一行,故不用加冒号
 8     scanf_s("%d / %d / %d", &month, &day, &year); // 注意格式串的空格可以防止输入时输入空格导致发生错误
 9
10     printf("You entered the date %d-%d-%d\n", year, month, day);
11
12     return 0;                                  // 返回整数值0,0表示函数是正常退出的,从而结束程序
13 }

点我

由此引出了我们要讲的第二个函数scanf_s(书里讲的是scanf函数,不过用它会发出警告),就

是格式化输入函数,也就是用户可以通过这个函数输入数据,这个函数读取数据的方式有点奇葩,

首先它的形式一般是这样滴, 假设a,b是我们定义的两个int型变量:

scanf_s("%d %d", &a, &b);

用户输入的是   ..32..24  (点代表空格),这丫在寻找数的开头时,会跳过空格,也就是它先跳过两个

空格,发现3,可以是整数的开头,所以函数接着读取第二个字符2,直到遇到后面的空格,发现不是

整数,所以把34存入变量a,把空格放回去,完成第一个%d的工作。

同理,跳过后面的空格,开始找第二个整数的开头(函数会一直跳过空白字符直到找到非空白字符为止)........

----------------------------------------------------------------------------------------------------------

实例2

 1 # include <stdio.h>
 2
 3 int main(void)
 4 {
 5     int number, year, month, day;   // 声明三个整数型变量
 6     float price;                    // 声明浮点型变量
 7
 8     printf("输入项目数目: ");       // sacnf_s函数前面的printf会自动换行,此处不用再加 '\n'
 9     scanf_s("%d", &number);
10
11     printf("输入单位价格: ");
12     scanf_s("%f", &price);
13
14     printf("输入购买日期: ");
15     scanf_s("%d / %d / %d", &year, &month, &day);  // 注意此处斜杠与转换说明%d之间带有空格
16     // '\t'表示水平列表符,%7.2表示$之后及包括Price(比如是13.5)在内的字符长度一共是7,浮点数带2位小数
17     printf("Item\tUnit Price\tPurchase Date\n%d\tS%7.2f\t%d-%d-%d\n", number, price, year, month, day);
18
19     return 0;
20
21
22 }

查看

此处,需要格外注意的是水平列表符 \t,比如Unit Price与Purchase Day,由于两者的字符长度超过了7个空格的

长度,(就是8个字符及以上长度),本来U与P之间是间隔8个字符长度的( 即Item和它与Unit之间的空白间隔 ) ,10

个字符长的Unit Price的关系,导致U到P的距离由8个长度变成16个长度。导致下面的$+float也得超过7个长度,

才能往后推8个长度,从而使日期与 Purchase Date 对齐!

转载于:https://www.cnblogs.com/Ruby517/p/5750925.html

【入门二】格式化输入/输出相关推荐

  1. 第4章 字符串和格式化输入/输出

    学习笔记--<C Primer Plus> 第4章 字符串和格式化输入/输出 4.1 前导程序 4.2 字符串简介 4.2.1 char 类型数组和 null 字符 4.2.2 使用字符串 ...

  2. C语言字符串0x,0X04 字符串跟格式化输入/输出

    0X04 字符串和格式化输入/输出 字符串(character string)就是一个或多个字符的序列.如:"hello world",双引号不是字符串的一部分,而是通知编译器,这 ...

  3. c语言file_C语言 技能提升 系列文章(七)格式化输入/输出

    当初大家入门学习C语言的时候,面对一个黑黑的命令行界面,仅有的交互方法只有printf/scanf这两个函数作为输入输出.但是,大家知道吗?这两个函数后面还有很多兄弟姐妹.那就是C语言的格式化输入输出 ...

  4. C语言基础之4:字符串和格式化输入/输出

    Tips1 函数:strlen() 关键字:const 字符串 如何创建.存储字符串 如何使用strlen()函数获取字符串的长度 用C预处理器指令#define和ANSIC的const修饰符创建符号 ...

  5. 第五 字符串和格式化输入/输出

    C语言学习栏目目录 目录 1.前导程序 2.字符串简介 3 常量和C预处理器 这篇介绍下列内容: 函数:strlen() 关键字:const 字符串 如何创建.存储字符串 如何使用strlen()函数 ...

  6. C语言学习(四)字符串和格式化输入/输出

    程序清单4.1 talkback.c程序 // talkback.c -- 演示与用户交互 #include <stdio.h> #include <string.h> // ...

  7. C 语言——字符串和格式化输入/输出

    一.字符串  1.char数组类型和空字符 c没有为字符串定义专门的变量类型,而是把它存储在char数组中. 将数组看成是一行中的多个存储单元,字符串中的每个字符占用一个字符,最后一个位置显示空字符\ ...

  8. c语言格式化输入字符型,C语言——字符串和格式化输入/输出

    今天,学习了C Primer Plus的第四章.本章讲解了一些简单的C预处理器的知识,一些字符.字符串以及数组等相关概念以及输入输出函数的使用. 现将知识点总结如下: 字符串:一个或多个字符的序列(双 ...

  9. c++ 数组的输入遇到特定字符停止输入_C语言 第4章-字符串和格式化输入/输出

    #include 用数组name储存字符串,name数组有40个字节,每个字节储存一个字符值. 在scanf()函数中,输入字符串name没有&前缀. C预处理器把字符常量DENSITY定义为 ...

  10. c语言中使用的字符常量 其起止标记,C Primer Plus学习笔记(三)- 字符串和格式化输入/输出...

    从一个简单的例子开始 #include int main() { char name[10]; printf("Input Your Name:\n"); scanf(" ...

最新文章

  1. 使用 rocketmq-spring-boot-starter 来配置、发送和消费 RocketMQ 消息
  2. 10 年深度学习顶级论文和代码精选,请务必收藏!
  3. python秒表小项目_适合新手练习的几个python小项目
  4. 音视频技术开发周刊 | 148
  5. 51nod1244 欧拉函数之和 杜教筛
  6. 如何在Java中将InputStream读取/转换为String?
  7. 你想过35岁以后的出路吗
  8. Communication System--ZOJ 1409
  9. 最新JCR期刊影响因子及分区情况(中科院SCI期刊分区表)
  10. C语言作业NOTES
  11. 新系统软件著作权申请流程及注意事项
  12. Unity Fingers Gesture手势插件教程(新)
  13. 线性同余发生器与伪随机数
  14. 时间序列预测方法最全总结!
  15. 微信小程序 - 修改 button 边框和背景色
  16. js页面中实现加载更多功能
  17. C语言编周期100ms的方波信号,单片机系统设计 - 2020学年春(邸志刚)-中国大学mooc-题库零氪...
  18. Photoshop CS2 视频教程-PS锁定图层(转)
  19. 【python小作业】编写函数,接收一个任意字符串,返回其中最长的数字字串。要求使用正则表达式。
  20. 终端设备的物联网控制方案

热门文章

  1. boot客户管理系统源码_开源 SpringBoot+vueJs 前后端管理系统模版
  2. mysql5.7 主从
  3. 2星|《零工经济》:缺少对数据、事实、概括、分析,基本是流于表面的畅想...
  4. 图像处理之局部二值特征
  5. Caffe+CUDA8.0+CuDNNv5.1+OpenCV3.1+Ubuntu14.04 配置参考文献 以及 常见编译问题总结
  6. parse Json
  7. C#中的方法(函数),委托和事件
  8. quick cocos2dx 3.3 踩坑日记(三)------ setPOSTData
  9. 系统子系统_GPRS子系统流程图
  10. C#基础知识梳理系列七:字符串