【入门二】格式化输入/输出
格式化输出说的是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
【入门二】格式化输入/输出相关推荐
- 第4章 字符串和格式化输入/输出
学习笔记--<C Primer Plus> 第4章 字符串和格式化输入/输出 4.1 前导程序 4.2 字符串简介 4.2.1 char 类型数组和 null 字符 4.2.2 使用字符串 ...
- C语言字符串0x,0X04 字符串跟格式化输入/输出
0X04 字符串和格式化输入/输出 字符串(character string)就是一个或多个字符的序列.如:"hello world",双引号不是字符串的一部分,而是通知编译器,这 ...
- c语言file_C语言 技能提升 系列文章(七)格式化输入/输出
当初大家入门学习C语言的时候,面对一个黑黑的命令行界面,仅有的交互方法只有printf/scanf这两个函数作为输入输出.但是,大家知道吗?这两个函数后面还有很多兄弟姐妹.那就是C语言的格式化输入输出 ...
- C语言基础之4:字符串和格式化输入/输出
Tips1 函数:strlen() 关键字:const 字符串 如何创建.存储字符串 如何使用strlen()函数获取字符串的长度 用C预处理器指令#define和ANSIC的const修饰符创建符号 ...
- 第五 字符串和格式化输入/输出
C语言学习栏目目录 目录 1.前导程序 2.字符串简介 3 常量和C预处理器 这篇介绍下列内容: 函数:strlen() 关键字:const 字符串 如何创建.存储字符串 如何使用strlen()函数 ...
- C语言学习(四)字符串和格式化输入/输出
程序清单4.1 talkback.c程序 // talkback.c -- 演示与用户交互 #include <stdio.h> #include <string.h> // ...
- C 语言——字符串和格式化输入/输出
一.字符串 1.char数组类型和空字符 c没有为字符串定义专门的变量类型,而是把它存储在char数组中. 将数组看成是一行中的多个存储单元,字符串中的每个字符占用一个字符,最后一个位置显示空字符\ ...
- c语言格式化输入字符型,C语言——字符串和格式化输入/输出
今天,学习了C Primer Plus的第四章.本章讲解了一些简单的C预处理器的知识,一些字符.字符串以及数组等相关概念以及输入输出函数的使用. 现将知识点总结如下: 字符串:一个或多个字符的序列(双 ...
- c++ 数组的输入遇到特定字符停止输入_C语言 第4章-字符串和格式化输入/输出
#include 用数组name储存字符串,name数组有40个字节,每个字节储存一个字符值. 在scanf()函数中,输入字符串name没有&前缀. C预处理器把字符常量DENSITY定义为 ...
- c语言中使用的字符常量 其起止标记,C Primer Plus学习笔记(三)- 字符串和格式化输入/输出...
从一个简单的例子开始 #include int main() { char name[10]; printf("Input Your Name:\n"); scanf(" ...
最新文章
- 使用 rocketmq-spring-boot-starter 来配置、发送和消费 RocketMQ 消息
- 10 年深度学习顶级论文和代码精选,请务必收藏!
- python秒表小项目_适合新手练习的几个python小项目
- 音视频技术开发周刊 | 148
- 51nod1244 欧拉函数之和 杜教筛
- 如何在Java中将InputStream读取/转换为String?
- 你想过35岁以后的出路吗
- Communication System--ZOJ 1409
- 最新JCR期刊影响因子及分区情况(中科院SCI期刊分区表)
- C语言作业NOTES
- 新系统软件著作权申请流程及注意事项
- Unity Fingers Gesture手势插件教程(新)
- 线性同余发生器与伪随机数
- 时间序列预测方法最全总结!
- 微信小程序 - 修改 button 边框和背景色
- js页面中实现加载更多功能
- C语言编周期100ms的方波信号,单片机系统设计 - 2020学年春(邸志刚)-中国大学mooc-题库零氪...
- Photoshop CS2 视频教程-PS锁定图层(转)
- 【python小作业】编写函数,接收一个任意字符串,返回其中最长的数字字串。要求使用正则表达式。
- 终端设备的物联网控制方案
热门文章
- boot客户管理系统源码_开源 SpringBoot+vueJs 前后端管理系统模版
- mysql5.7 主从
- 2星|《零工经济》:缺少对数据、事实、概括、分析,基本是流于表面的畅想...
- 图像处理之局部二值特征
- Caffe+CUDA8.0+CuDNNv5.1+OpenCV3.1+Ubuntu14.04 配置参考文献 以及 常见编译问题总结
- parse Json
- C#中的方法(函数),委托和事件
- quick cocos2dx 3.3 踩坑日记(三)------ setPOSTData
- 系统子系统_GPRS子系统流程图
- C#基础知识梳理系列七:字符串