C学习笔记(八)字符输入输出和输入确认
缓冲区
缓冲区分为两类:完全缓冲(fully buffered)I/O和行缓冲(line-buffered)I/O。完全缓冲在缓冲区满时被清空(内容被发送至目的地)。这种类型常出现在文件输入中。缓冲区的大小取决于系统。行缓冲在遇到换行字符时被清空。键盘输入是标准的行缓冲。
文件、流和键盘输入
c程序处理一个流而不是一个文件。键盘输入由一个被称为stdin的流表示,而到屏幕(或电子传真机、或其他输出设备)上的输出由一个被称为stdout的流表示。
文件结尾
检测文件结尾的一种方法是在文件中放置一个特殊字符来标志结尾。例如CP/M、IBM/DOC和MS/DOC的文本文件中曾使用一种方法。使用内嵌的Ctrl+Z字符来标识文件结尾。
第二种方法是让操作系统存储文件大小的信息。如果一个文件有3000字节,而且程序已经读取了3000字节,则改程序就到达了文件结尾。
对于这两种方法,c的处理方法是让getchar()在到达文件结尾时返回一个特殊值,此值名称为EOF(End Of File)。
重定向和文件
令程序和文件一同工作有两种方式。一种方式是明确的使用打开文件、关闭文件、读文件、写文件等专门函数。
第二种方式是使用一个设计用于与键盘和屏幕共同工作的程序,但是使用不同通道重定向输入和输出,例如输入到文件和从文件输出。
输入重定向
假如你编译了echo_eof.c,要运行程序,键入该程序的名字。
echo_ eof
假设你要对一个名为words的文本文件使用该程序。
echo_ eof<words
<符号是Unix、Linux重定向运算符。该运算把words文件的内容引导至echo_eof程序。
输出重定向
假如你想echo_eof将你的键盘输入发送给一个名为mywords的文件。
echo_ eof>mywords
>会建立一个新文件,然后将echo_eof的输出重定向到该文件。
组合重定向
假如你希望制作mywords的一个副本,并将其命名为savewords,只需发出命令:
echo_ eof<mywords>savewords
下面的语句同样可以实现,重定向运算符的顺序无关紧要:
echo_ eof>savewords<mywords
C学习笔记(八)字符输入输出和输入确认的更多相关文章
- C Primer Plus_第8章_字符输入输出和输入确认_编程练习
1.题略 #include <stdio.h> int main(void) { ; printf("Please enter text here(end with Ctrl + ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Go语言学习笔记八: 数组
Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...
- go微服务框架kratos学习笔记八 (kratos的依赖注入)
目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...
- Redis学习笔记八:集群模式
作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...
- Java IO学习笔记八:Netty入门
作者:Grey 原文地址:Java IO学习笔记八:Netty入门 多路复用多线程方式还是有点麻烦,Netty帮我们做了封装,大大简化了编码的复杂度,接下来熟悉一下netty的基本使用. Netty+ ...
- ROS学习笔记八:基于Qt搭建ROS开发环境
1 前言 本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Q ...
随机推荐
- 4.用PHP打印出前一天的时间格式是2006-5-10 22:21:21
echo date('Y-m-d H:i:s', strtotime('-1 days'));
- IIS7 应用程序池设置成 经典 v2.0
HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipe ...
- 0511 backlog
SCRUM 这次的作业就是确定SCRUM的计划,确定sprint backlog的一个冲刺周期,而这个周期是两个星期.争取在两周内发布1.0版本. 本次作业以网站构建为主: ID NAME ...
- 利用jquery获取html中被选中的input的值
单个按钮 <div id="wrap"> <input type="radio" name="payMethod" val ...
- Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法
最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正. 一机器学习是什么? 感觉和 Tom M. Mitchell的定义几乎一致, A computer program ...
- 设置IE默认文本模式的方法
设置IE默认文本模式的方法 <meta http-equiv="X-UA-Compatible" content="IE=8" /> IE=5.6. ...
- Django开发笔记之数据库的设计
后台采用Django开发,可以体会到开发的便利之处,对于一个项目来说,首先最重要的是数据库的设计,那么在Django下数据库设计主要是如下步骤: 1,需求分析,这点子不用多说,而我也深刻体会到了没有原 ...
- 解决jQuery ajax跨域问题,Google、IE、Firefox亲测有效
直接上最后的结果吧 JS: $.ajax({ type: "GET", async: false, crossDomain: true, url: "www.test.c ...
- 反编译ILSpy 无法显式调用运算符或访问器 错误处理方法 转
反汇编一个dll类库,导出的项目会报出很多bug,其中主要的就是“无法显式调用运算符或访问器”这个错误,看了一下,发现问题是在调用属性的时候,都 变成了方法,例如:pivotPoint.set_X(0 ...
- 给jar包进行数字签名(2014-06-28记)
整理一下两年前用到的一些资料. 为了使Applet或者Java Web Start程序能够访问客户端本地资源,需要对Applet或者JWS程序jar包进行数据签名,当客户端打开Applet或者JWS程 ...