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 ...
随机推荐
- Jmeter工作原理
- spring02
1.在spring容器中的一个bean的整个生命周期 1.启动spring容器 2.bean实例化 3.装配属性 4.BeanNameAware:setBeanName 5.BeanFactoryAw ...
- ubifs物理存储
Ubifs通过ubi管理MTD设备,ubi的LEB随机映射PEB,其本身占用一部分PEB,具体文件存储情况分析如下. 1. Ubi中不管是是逻辑块号还是物理块号都是从0开始的.一般情况下,Nandfl ...
- cocos2dx 3.x(在Mac平台下利用Eclipse打包安卓apk安装包详细教程)
最近在学习cocos2dx在MAC上如何打包apk,今天先把安装JDK和ANT的过程记来. 首先,打开终端,输入"java -version" 点击回车后,出现如下提示: 我们的M ...
- 【转】SQLServerDBA十大必备工具---让生活轻松点
曾经和一些DBA和数据库开发人员交流时,问他们都用过一些什么样的DB方面的工具,大部分人除了SSMS和Profile之外,基本就没有使用过其他工具了: 诚然,SSMS和Profile足够强大,工作的大 ...
- Web动画API教程1:创建基本动画
本人转载自: Web动画API教程1:创建基本动画
- yield return的作用
测试1: using UnityEngine; using System.Collections; public class test1 : MonoBehaviour { // Use this f ...
- innodb数据结构
Jeremy Cole on InnoDB architecture : Efficiently traversing InnoDB B+Trees with the page directory ...
- Writing Your Own jQuery Plugins
Setting Up <script src="js/jquery-1.9.1.min.js"></script> <script src=" ...
- LeetCode----66. Plus One(Java)
package plusOne66; /* Given a non-negative number represented as an array of digits, plus one to the ...