单字符I/O:getchar()和putchar()
缓冲区
完全缓冲
行缓冲
//echo.c--重复输入
#include <stdio.h>
int main(void)
{
char ch;
while ((ch = getchar() )!= '#')
putchar(ch);
return 0;
}
结束键盘输入
文件 流和键盘输入
- 文件(file) :是存储器中储存信息的区域。通常,文件都保存在某种永久的存储器中如硬盘 优盘 DVD等
C是一门强大灵活的语言,有许多用于打开 读取 写入和关闭文件的库函数。从较低层面上,C可以使用主机操作系统的基本文件工具直接处理文件,这些直接调用操作系统的函数被称为底层I/O(low-level).
不同操作系统储存文件的方式不同。有些系统把文件的内容储存在一处,而文件相关信息储存在另一处;有些操作系统在文件中创建一分文件描述。在处理文件方面,有些系统使用单个换行符标记行末尾,而其他系统可能使用回车符和换行符的组合来表示行末尾。哟写系统用小字节来衡量文件的大小,有些系统则用字节快的大小来衡量。
文件结尾:法一,在文件末尾做一个特殊的字符标记文件结尾。法二储存文件大小的信息。
重定向和文件:
输入 输出涉及函数函数 数据 和设备。在默认情况下,C程序使用标准I/O包查找标准输入作为输入源。stdin流是把数据读入计算机的常用方式。
程序可 以通过两种方式使用文件。第一种方法是显示使用特定的函数打开文件夹 关闭文件夹 读取文件 写入文件 诸如此类。第二种方法是设计能与键盘和屏幕互动的程序,通过不同的渠道重定向输入至文件和从文件中输出。
对于UNIX和DOS/WINDOWS LInux命令提示,<两侧的空格是可选的。一些系统,如AmigaDOS系统支持重定向,但是在重定向符号和文件名之间不允许有空格。
组合重定向
现在假设你希望制作一份mywords文件的副本并命名为savewords,只需要输入以下命令即可
/echo_eof>mywords<savewords
下面命令也起作用
/echo_eof>savewords<mywords
注意,在一条命令中,输入文件名和输出文件名不能相同。
在系统中使用两个重定向运算符时,要遵循以下原则
- 重定向运算符链接一个可执行的程序(包括操作系统命令)和一个数据文件,不能用于连接一个数据文件和另一个数据文件,也不能连接一个程序和另一个程序。
- 使用重定向运算符不能读取多个文件输入,也不能把输出定向至多个文件。
- 通常,文件名和运算符之间的空格不是必须的,除非是偶尔在UNIX shell、Linux shell或Window命令行提示模式使用的有特殊含义的字符。