C语言——第九章文件.doc
文本预览下载声明
我们现在设计的输入、输出对象都是计算机终端
文件 stdin stdout stderr
输入的数据量较大时,采用文件的方式
数据又分为:字符代码(文本、正文,须转换)和二进制文件(占用空间小,输入输出速度快)
例: 12.367
采用二进制占 4 个字节
采用文本,占 6 个字节
磁盘文件系统:
缓冲文件系统
可以相应减少读写盘次数(由系统代替用户做)
非缓冲文件系统
与低层连接紧密,所以执行效率高(与OS连接较紧密)
标准I/O提供4种读写文件的方法 :
① R/W 一个字符 fgetc fprintc
② R/W 一个字符串 fgets fprints
③ 格式化R/W fscanf fprintf
④ R/W一个记录 fread fwrite
标准I/O
函数 相当于终端I/O
函数 作用 fgetc getchar 输入一个字符 fputc putchar 输出一个字符 fgets gets 输入一个字符串 fputs puts 输出一个字符串 fscanf scanf 按指定的格式输入若干个变量的值 fprintf printf 按指定的格式输出若干个数据 对于系统I/O(非缓冲文件系统),只提供按记录读写的函数:read和write。
例9.1:将键盘输入的文本存入文件file.txt中。
#include stdio.h
main ( )
{ ① FILE *fp;
char ch ;
② if ((fp=fopen ( file.txt, w)) == NULL)
{ printf (Can not open this file !\n);
exit ( 0 );
}
while (( ch = getchar ( ))!= \n)
③ fputc ( ch, fp);
④ fclose (fp);
}
要调用一个文件,需要有以下的信息:文件的当前位置与该文件对应的内存缓冲区的地址、文件操作方式等。所以缓冲型为每个文件开辟一个“文件信息区”。采用结构的方式定义“信息区”:
typedef struct {……
} FILE;
FILE *p1;
fopen函数是用来“打开”文件的,文件名一项可带路径,例c:\\tc\\file.txt,
第二个参数为文件使用方式,见下表:(p314)
r 只读 为输入打开一个字符文件 w 只写 为输出打开一个字符文件 a 追加 向字符文件尾增补数据 rb 只读 为输入打开一个二进制文件 wb 只写 为输出打开一个二进制文件 ab 追加 向二进制文件尾增补数据 r+ 读写 为读/写打开一个字符文件 w+ 读写 为读/写建立一个新的字符文件 a+ 读写 为读/写打开一个字符文件 rb+ 读写 为读/写打开一个二进制文件 wb+ 读写 为读/写建立一个新的二进制文件 ab+ 读写 为读/写打开一个二进制文件 fopen函数有一个返回值,它是一个地址值,指向被打开文件的文件信息区的起始地址。如果操作失败,则返回NULL 。
③将ch写到fp所指向的文件中
④关闭fp所指向的文件。
例9.4:统计文件中的单词个数。(P319)
#include stdio.h
main(int argc,char *argv[])
{ FILE *fp;
char ch;
int white=1;
int count=0;
if((fp=fopen(argv[1],r))==NULL)
{ printf(cant open file %s.,argv[1]);
exit(0);
}
while((ch=fgetc(fp))!=EOF)
switch(ch)
{ case :
case\t:
case\n: white++;br
显示全部