C primer plus第8章“字符输入/输出和输入验证”学习总结

//下面仅为个人理解

目录

1.用C程序处理输入/输出

(1)流程

(2)流程解读

1.处理文件内容

2.处理文件结尾

(3)缓冲区

(4)重定向

1.分类

2.理解

3.用法

 4.重定向的书写格式

5.组合重定向

2.输入验证

(1)目的

(2)用户输入出错的类型

(3)用户输入出错的的解决方法

3.零碎知识


1.用C程序处理输入/输出

(1)流程

处理文件内容→处理文件结尾

(2)流程解读

1.处理文件内容

从概念上看,C通过把文件”这一包含多种属性的输入“转化为属性统一的来处理文件,于是,打开文件的过程就是把流与文件相关联,并且程序的读写都通过流来完成。(流是一个实际输出或输入映射的理想化数据流)。

2.处理文件结尾

必要性

C程序需要通过处理文件结尾来结束文件输入或输出

方式

a.储存文件大小的信息

举例:比如说C程序要读取一个内含300字符的文件,那么在读取300个文件中的字符后就会停止读取。

好处:这种方式不需要避讳特殊字符。UNIX用这种方法处理所有文件。

b.用特殊字符标记(ctrl+D或者ctrl+Z)

描述:在待读取的输入内做出特殊标记ctrl+D或者ctrl+Z后,等到getchar()读取到这个特殊字符,会返回一个特殊的值EOF(EOF的值为-1,原因是所有字符的对应值都不为-1,并且需要注意的是EOF只是一个值,标志着文件结束,并不是在输入中可以找到的符号)

(3)缓冲区

介绍

在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。

分类

完全缓冲I/O与与行缓冲I/O。完全缓冲输入指的是当缓冲区被填满时才能刷新缓冲区,通常出现在文件输入中。行缓冲指的是出现换行符时刷新缓冲区,通常出现在键盘输入中。

有缓冲区与无缓冲的区别

无缓冲执行速度更快。有缓冲区时方便修改错误,因为输入的内容并不会直接执行。

(4)重定向

1.分类

重定向输入(运算符为<)与重定向输出(运算符为>)。

2.理解

重定向输入就是把文件的内容输入到指定的程序中,重定向输出就是把程序运行的结果输出到指定的文件中。

3.用法

(不同的操作系统有不同,这是Windows的用法)编写源代码生成可执行文件将生成的exe文件转移到Windows命令行指定的文件夹里启用命令行进行重定向

以我的Windows举例:(把exe文件转移到第三行的文件中,然后进行重定向)

 4.重定向的书写格式

一些操作系统要求重定向运算符左侧留有一个空格(比如说A.exe <B.txt),但对于UNIX,Linux,Windows命令提示,重定向运算符两侧的空格是可选项(就是可有可无)。

5.组合重定向

组合重定向时都是对第一个程序或者文件而言的(比如说重定向A<B>C<D,其中的B,C,D都是与A相关联的,不过执行顺序是依次的)


2.输入验证

(1)目的

提醒并帮助纠正用户的错误输入,给用户以友好的体验。

(2)用户输入出错的类型

a.用户输入同一类但不同类型的数据(比如说程序要求用户输入1~10任意一个数字,而用户却输入了-4)

b.用户输入了不同类型的数据(比如说程序要求用户输入最喜欢的一个动物,用户却输入了一个4)

(3)用户输入出错的的解决方法

用户输入同一类但不同类型的数据时,可以通过关系表达式来排除这种情况,就是说用循环或者条件选择语句来引导用户正确输入

用户输入了不同类型的数据时,可以通过用scanf()函数成功读取的数据个数来排除这种情况。


3.零碎知识

1.scanf返回值为成功读取的项的个数
2.EOF是一个值,不是在文件中找得到的符号
用在   程序<文件   的重定向情况下
3.如果用不了重定向,可以用程序直接打开文件。(步骤请看225页)
4.ANSI C把缓冲输入作为标准
5.文件是存储器中储存信息的区域,通常保存在永久存储器中。


                                   结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值