主要-创建友好页面要点

+I/O为C中标准输入输出函数标准输入输出可轻松在不同系统中移植(C供应商会根据不同系统特性提供一些额外的I/O函数 +getchar()&scanf()函数getchar()单字符读入,不跳过空格,未成功读取的字符将放回到输入列中等待下次首次输入时读取,返回值为函数第一个读取的字符的ascll码scanf()由格式字符串和参数列表组成,scanf()使用空白把输出分成...
摘要由CSDN通过智能技术生成

+I/O为C中标准输入输出函数

标准输入输出可轻松在不同系统中移植(C供应商会根据不同系统特性提供一些额外的I/O函数

 

+getchar()&scanf()函数

getchar()单字符读入,不跳过空格,未成功读取的字符将放回到输入列中等待下次首次输入时读取,返回值为函数第一个读取的字符的ascll码

scanf()由格式字符串和参数列表组成,scanf()使用空白把输出分成多个字段,在依次把转换说明和字段匹配时跳过空白,在读到与期待数据类型不一样的数据时,将数据放回输入,下次读取时再次读取此数据,如读入成功,scanf()函数返回成功读取的项数。

 

+用户输入后,回显后立刻打印字符的输入方式为无缓冲(直接)输入,程序立即使用字符

在用户输入后所输入内容被存放到缓冲区(临时储存区)的输入方式为缓冲输入

缓冲输入的优点在于把输入数据作为块传输效率高,且输入错误可修改

 

缓冲类型分为完全缓冲和行缓冲

完全缓冲常用于文件输入,完全缓冲指将缓冲区填满后才刷新缓冲区(发送数据到指定目的地,如显示器或另一文件),缓冲区大小取决于系统大小

,通常为512字和4096字节。行缓冲指在遇见换行符后才刷新缓冲区,常见的行缓冲为键盘输入

 

无缓冲输入分为回显无缓冲getche()和无回显无缓冲getch()

 

+文件是储存器中储存信息的区域。

从较低层面来说,C可以使用主机操作系统的基本文件工具直接处理文件,这些直接调用操作系统的函数被称为底层I/O,因为操作系统的不同,底层函数没有标准库。从较高层面来说,C可以通过标准I/O包来处理文件,这涉及创建一套用于处理文件的标准模型和一套标准I/O函数

 

流是一个实际输入或输出映射的理想化数据流,(流是在抽象层面上提炼杂乱的数据输入,挑选净化其成为需要的数据类型?)这意味着不同属性不同种类的输入由属性更统一的流来表示,于是打开文件就是将流与文件相关联,而且读写都是通过流来完成

 

8章着重理解C把键盘输入和屏显视为自动打开的普通文件,stdin流和stdout流分别表示键盘输入和屏幕输出getchar()putchar()printf()scanf()函数都是标准I/O包的成员,处理这两个流

 

+把键盘输入视为文件,学习如何结束文件,结束文件方法一为在文件末尾的设置特殊字符(如今可使用内嵌的ctrl+z字符来标记文件结尾。方法二是记录文件大小,在超出文件大小后自动停止读入

 

getchar()和scanf()在读到文件结尾时都返回EOF(END OF FILE),其值为-1(在0-255之外,不会与输入值重合,所以可以表示结尾,如有stdio.h文件,不用担心设置EOF的值)

 

如读取的不是文件而是键盘输入,也不用担心,绝大部分系统都有办法通过键盘模拟文件结尾条件

 

UNIX和linux,在一行开始处,按ctrl+d即文件结尾符

 

+重定向文件

程序输入和输出数据的位置是可以重新定向的,程序可以在别处查找输入并非只局限于键盘,也可将输出送至文件而并非屏幕。方法有两种,第一种是使用特定的函数。第二种是设计能与键盘与屏幕交互的程序,通过不同的文件重定向输入到文件和文件的输出

 

重定向输入

 

假设Echo_eof是已被编译程序,其可执行版本被放入名为Echo_eof的文件中,运行该程序,输入可执行文件名

Echo_eof

现在程序运行,获取用户从键盘的输入并将其打印在屏幕上,但如果想要将键盘输入换为从一个文件输入数据,使用以下指令即可

假设words为一个文本文件

Echo_eof<words  该运算符将words和stdin流相关连,把文件内容导入程序,并将其打印在屏幕上

 

对于unix linux windows系统来说,<两侧空格是可选的,但某些旧系统是不可省略的

 

$是unix和linux的标准提示符,它之后跟的是输入命令,但他不是指令的一部分,在命令执行结束后它会显现出来,之后用户可以继续输入命令然后按下enter命令再次执行

 

 

同理重定向输出

 

Echo_eof>my words

表示将程序所接收到的内容重定向到新创建的文件mywords里,>指令将stdout从屏幕赋给文件。这样以来,屏幕上显示的内容的副本都将显示在新创文件中,如新创文件名已存在,则将抹去其原有内容或设为已读文件

检查使用unix Is命令列出文件名和cat命令检查文件内容,或重定向文件到程序

 

组合重定向

假设创建mywords副本,命名为savewords。则可使用

Echo_eof<mywords>savewords或者

Echo_eof>savewords<mywords(命令与重定向符的顺序无关)

但是同一命令中重定向符两边文件名不可相同如

Echo_eof<mywords>mywords(>mywords在输入前长度已为0)

 

重定向运算符规则

只能连接可执行程序(包括标准操作系统命令)和数据文件,不能连接数据文件和数据文件,程序和程序

重定向不能同时接收多个文件的输入也不能同时输出至多个文件

文件名和运算符之间的空格不是必须的,除非unix shell linux shell windows 命令行模式中使用的有特殊含义的字符

 

扩展

unix linux windows/dos还有>>运算符,可把数据添加到现有文件末尾。|能把一个文件的输出连接到另一个文件的输入

 

 

重定向是个命令行概念,因为我们要在命令行输入特殊符号才能发出指令,如果不使用命令行,也可以重定向。一些ide环境提供菜单选项,让用户指定重定向

 

+创建更友好的用户界面

使用缓冲输入且注意混合数值和字符输入,在读取输入时getchar()和scanf()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值