《C Prime Plus》第八节笔记
第八节 字符输入/输出和输入验证
8.1 单字符I/O:getchar()和putchar()
- getchar()和putchar()包含在stdio.h头文件中
8.2 缓冲区
- 无缓冲输入: 直接回复用户
- 缓冲输入: 暂缓回复
- 缓冲区:收集用户输入字符的临时存储区
- 节省时间
- 可以修正输入
- 完全缓冲I/o:当缓冲区被填满时才刷新缓冲区
- 行缓冲I/O:出现换行符时刷新缓冲区
8.3 结束键盘输入
8.3.1 文件、流和键盘输入
8.3.2 文件结尾
- 文件结尾的一种方法:在文件的末尾放置一个特殊的字符文件标记(ctrl+z)
- 另一种方法:储存文件大小的信息
- getchar()和scanf()读取到文件末尾返回EOF
- EOF在stdio.h中被预处理定义
- UNIX中Ctrl+D PC中Ctrl+Z
8.4 重定向和文件
8.4.1 UNIX、Linux和DOS的重定向
- 重定向输入让程序使用文件而不是程序输入
- 重定向输出让程序输出到文件而不是屏幕
- 重定向输入 >
- 重定向输出 <
- 组合重定向 >输出文件 <输入文件
- 关于重定向的要求:
- 程序与文件放在同同一路径下
- cmd窗口使用时用cd指令来改变路径
- 一对一原则
- << 可以将字符加在文件之后而不覆盖
8.5 创建更友好的用户界面
8.5.1 使用缓冲输入
- 考虑用户各种输入情况
- 处理好输入结尾\n
8.5.2 混合数值和字符输入
- getchar()读取每个字符,包括空格、制表符和换行符,而scanf()则会跳过这些
- scanf()输入会返回数值,数值代表成功读取个数
8.6 输入验证
8.6.1 分析程序
- 程序遵循模块化的编程思想,使用独立函数(模块)来验证输入和管理显示。
8.6.2 输入流和数字
- gatchar()和%c的scanf()可以接受所有的字符
8.7 菜单浏览
- switch语句
- 解决缓冲输入带来的麻烦,跳过多余输入和换行符
while(getchar()!='\n')
continue;
《C Prime Plus》第八节笔记的更多相关文章
- Chapter6(函数) --C++Prime笔记
1.重载函数,也就是说一个名字可以对应几个不同的函数. 2.内置类型的未初始化局部变量将产生未定义的值. 3.局部静态对象在程序执行路径第一次进过对象定义语句时初始化,并且直到程序终止才被销毁. 内置 ...
- Chapter2(变量和基础类型)--C++Prime笔记
数据类型选择的准则: ①当明确知晓数值不可能为负时,选用无符号类型. ②使用int执行整数运算.在实际应用中,short常常显得太小而long一般和int有一样的尺寸.如果运算范围超过int的表示范围 ...
- Chapter1(预科)--C++Prime笔记
心得体会: 因为之前一直在用在学C,因此在看完C++Prime第一章后,就有中在一个培训班中,一个老师用一个简单的项目来带你了解这种语言的特性的感觉.当然这个告诉是在让你脑子固化接受一些点的前提下. ...
- HTML学习笔记 CSS表格及轮廓案例 第八节 (原创)参考使用表
#tb, tb1, tr, th, td { border: 5px solid blue; /*加边框*/ padding: 5px; /*内边距*/ } #tb1 { border-collaps ...
- [extjs5学习笔记]第三十八节 sencha CMD 6.0.0.220版本安装
本文地址:http://blog.csdn.net/sushengmiyan/article/details/46740381 简介 sencha cmd 6安装过程不需要UAC控制了对于widnow ...
- [ExtJS5学习笔记]第二十八节 sencha ext js 5.1.0发布版本正式发布 extjs doc下载地址
本文地址:http://blog.csdn.net/sushengmiyan/article/details/41911539 本文作者:sushengmiyan ------------------ ...
- [ExtJS5学习笔记]第十八节 Extjs5的panel的dockeditems属性配置toolbar
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39156321 官方例子:http://docs.sencha.com/extjs/5. ...
- [ExtJS5学习笔记]第八节 Extjs5的Ext.toolbar.Toolbar工具条组件及其应用
本文地址:http://blog.csdn.net/sushengmiyan/article/details/38515499 本文作者:sushengmiyan ------------------ ...
- Linux第八节课学习笔记
su命令可以切换用户身份,一般不用,而是用sudo. visudo命令中可执行命令列表不用ALL,我们可以先使用whereis命令找出命令所对应的保存路径,然后把配置文件第99行的用户权限参数修改成对 ...
随机推荐
- C语言笔记 15_标准库&locale&math&setjmp&signal&stdarg&stddef
<locale.h> 简介 locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号.接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两个重要的函数. ...
- Nginx系列p1:安装
学习新的知识都要从搭建环境开始,今天我们就来学习搭建一个 Nginx 环境. 环境:Ubuntu16.04 STL Nginx 1.16.1 Stable version 前言:当然可以通过 apt- ...
- 安装eclipse步骤以及配置jdk
1.官网下载eclipse 2.下载jdk并且安装,记住自己安装路径 3.配置jdk环境变量 在高级系统设置里面配置 新建: 用户变量:“变量名”:JAVA_HOME “变量值”:C:\Program ...
- A - Alice and the List of Presents (排列组合+快速幂取模)
https://codeforces.com/contest/1236/problem/B Alice got many presents these days. So she decided to ...
- CF round #622 (div2)
CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言 ...
- 用Axure画原型图有感
感觉前端做UE非常有优势啊- 但是在制作的时候,似乎陷入了误区: (1)只求原型图的漂亮,色彩丰富,忽略了其本质作用,是用来整理逻辑,画出逻辑流程的. (2)一开始就追求交互,高保真的原型,忽视了细节 ...
- ZJNU 2340/2341/2343 - 罗小黑的“礼物”Ⅰ/Ⅱ/Ⅲ
把一位数.两位数.三位数……这些所在的范围分开判断 可得1~9这些数范围在[1,9]内 10~99内共有90个数,每个数占两位,所以共有180位在,范围在[10,189]内 同理,100~999内共有 ...
- vue整合外部js
vue引入外部jsimport { TrackLine } from "../../../../../static/js/trajectory.js";import { initM ...
- 十二星座 英文名:Aries 金牛座 (4/21 - 5/20)的英文名: Taurus 双子座 (5/21 - 6/21)的英文名: Gemini 巨蟹座 (6/22 - 7/22)的英文名: Cancer 狮子座 (7/23 - 8/22)的英文名: Leo 处女座/室女座 (8/23 - 9/22)的英文名: Virgo 天秤座 (9/2
十二星座的具体顺序是:白羊座(Aries).金牛座(Taurus).双子座(Gemini).巨蟹座(Cancer).狮子座(Leo).处女座(Virgo).天秤座(Libra).天蝎座(Scorpio ...
- sklearn 模型评估
原文链接 http://d0evi1.com/sklearn/model_evaluation/ 预测值:pred 真实值:y_test #### 直接用平均值 ``` mean(pred == y_ ...