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 ...
随机推荐
- angularJs非空校验requied
<!DOCTYPE html><html><head><meta charset="utf-8"><title>< ...
- 部署移动BI必须要考虑的五大因素
随着大屏智能手机和平板电脑的普及,商业智能分析应用程序也需要移动化.由于用户并不会长时间在办公桌前工作.在新的设备以及新的用户的共同促进下,移动BI即将成为主流. 但是,所有人都应该清楚这样一个事实: ...
- erlang rabbitmq-server安装
erlang rabbitmq-server安装 yum -y install xsltproc fop tk unixODBC unixODBC-devel make gcc gcc-c++ k ...
- Netty之有效规避内存泄漏
有过痛苦的经历,特别能写出深刻的文章 —— 凯尔文. 肖 直接内存是IO框架的绝配,但直接内存的分配销毁不易,所以使用内存池能大幅提高性能,也告别了频繁的GC.但,要重新培养被Java的自动垃圾回收惯 ...
- 简介AngularJS中使用factory和service的方法
AngularJS支持使用服务的体系结构“关注点分离”的概念.服务是JavaScript函数,并负责只做一个特定的任务.这也使得他们即维护和测试的单独实体.控制器,过滤器可以调用它们作为需求的基础.服 ...
- 手机触摸touch事件
1.Touch事件简介 pc上的web页面鼠 标会产生onmousedown.onmouseup.onmouseout.onmouseover.onmousemove的事件,但是在移动终端如 ipho ...
- Openstack的项目管理方案
openstack作为云的解决方案,必须对某个用户,项目具有资源限制,不能无限制使用资源. 配置 在/etc/nova/nova.conf中,有 quota_driver=nova.quota.DbQ ...
- 161214、oracle查询表信息
1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.ind ...
- Volley获取网络图片使用总结
参考资料 http://www.3fwork.com/b600/001956MYM002697/ //缓存 int cacheSize= 10 * 1024 * 1024; //声明一个新的Reque ...
- 记一次动画的优化--requestAnimationFrame、webp
需要写一个类似帧动画的东西,但是每一帧是一张全屏的图,而且量特别大,600都张,而且存在跳帧的问题,只有把速度调的很快还可以看着不跳帧.但是只用谷歌还真正常播放. 其实优化起来两个方面.一个是用req ...