第10章+文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(2) fgetc函数
从以读或读写方式打开的文件读入一个字符。
调用形式:ch=fgetc(fp);
fp 是文件指针变量,ch是字符变量。如果在执行fgec读字符时 遇到文件结束符,函数返回一个文件结束标志EOF,EOF在 stdio.h中定义为-1。
以下程序从磁盘顺序读入字符并在屏幕显示:
ch=fgetc(fp);
第10章 文件
10.1 C文件概述
文件按组织形式可分为ASACSIIC文II件形和式二进制文件。 ASCII文件又称文本文件(text),它的每一个字节放一个
ASCII代码,代00表11一00个01字00符11。0000 00110000 00110000 00110000
二进制文件把1内存中的0 数据按其0在内存中0的形式原0样输出 到内磁存盘中。的形式 00如10果01一11个00整01型01数1110000在内存中占2个字节(整型数占2字节), 如果按ASCII输出,每一个数字是一个字符,共5个字符,每个 字符一个字节,共占5个0字01节00。111 00010111
2. 文件的关闭(fclose函数)
使用完一个文件后应该关闭它,以防止它在被误用或数据 丢失。 关闭文件时,先把缓冲区中的数据输出到磁盘文件, 然后才释放文件指针。 关闭文件的形式是:
fclose(文件指针); 例如: fclose(fp);
10.3 文件的读写
1. 读写一个字符的函数:fputc函数和fgetc函数
FILE *fp;
/* fp是一个指向文件的指针变量*/
可以用fp指向某一个文件的结构体变量,从而通过该结构体变 量中的信息访问该文件。即通过文件指针变量能够找到与它相 关的文件。
10.2 文件的打开与关闭
1. 文件的打开(fopen函数) fopen 函数的调用方式:
FILE *fp; fp=fopen(文件名,使用方式);
2. 非缓冲区文件系统:系统不自动开辟确定大小的缓冲区, 而由程序为每个文件设定缓冲区。
新的ANSI C标准不采用非缓冲区文件系统。但旧的标准仍 然存在。
文件类型指针
对于缓冲区文件系统,每个被使用的文件都在内存中开辟
一个区,用来存放文件的有关信息。(如文件名字、文件状态 及文件当前位置等)。这些信息是保存在一个结构体类型的变 量中的。该结构体类型由系统定义,取名FILE。可用“FILE” 定义文件指针如:
fp=fopen(“file1”,”r”) /*以只读方式打开文件,返回文件file1的指 针给fp.
文件使用方式
含义
搑?
Hale Waihona Puke Baidu
(只读) 为输入打开一个文本文件
搑?
(只写) 为输出打开一个文本文件
搑?
(追加) 向文本文件尾增加数据
搑b? (只读) 为输入打开一个二进制文件
搑b? (只写) 为输出打开一个二进制文件
说明:
1.“r”打开的文件只能读,且应是已存在的文件。
2.“w”打开的文件只能写,且是建立新文件,若原来有同名 文件,删除重建。
3.带“+”的使用方式,都是既读又写。
4.如果不能实现“打开”的任务,fopen函数将带回一个错 误信息。出错的原因可能是用“r”方式打开的文件不存在, 或磁盘满,或磁盘坏。此时fopen函数将带回一个空指针值 NULL(NULL在stdio.h中定义为0)。
搑b? (追加) 向二进制文件尾增加数据
搑+? (读写) 为读 /写打开一个文本文件
搑+? (读写) 为读 /写建立一个新的文本文件
搑+? (读写) 为读 /写打开一个文本文件
搑b+? (读写) 为读 /写打开一个二进制文件
搑b+? (读写) 为读 /写建立一个新的二进制文件
搑b+? (读写) 为读 /写打开一个二进制文件
常用下面方法打开文件:
if ((fp = fopen(“file1”, “r”))==NULL)
{ printf(“cnanot open this file\n”):
exit(0);}
exit()函数的作用是关闭所有文件,终止正调用的过程。
5.在程序开始运行时,系统自动打开三个标准文件:标准输 入、标准输出、标准出错输出。通常这三个文件都与终端联 系。因此以前我们所用到的从终端输入或输出,都不需要打 开终端文件。系统自动定义了三个文件指针stdin、stdout和 stderr,分别指向终端输入、终端输出和标准出错输出(也从 终端输出)。如果程序中指定要从stdin所指的文件输入数据, 就是指从终端键盘输入。
二进制形式
用ASCII码形式输出与字符一一对应,一个字节代表一 个字符,因而便于对字符进行逐个处理,也便于字符输出。 但占空间较大,且要花费转换时间。用二进制形式输出,可 以节省存储空间和时间,但一个字节并不代表一个字符,不 能直接输出字符。一般中间结果以二进制输出。
一个C文件就是一个字节流或二进制流,而不考虑记录 的界限。在C语言中对文件的存取是以字节为单位的。输入 和输出数据流的开始和结束仅受程序控制而不受物理符号控 制。这种文件叫做流式文件。
(1) fputc函数 (把一个字符写到磁盘文件中去。)
其一般形式是:fputc(ch, fp);
其中ch是要输出的字符,它可以是字符常量或字符变量。 fp是文件指针变量,它从fopen函数得到返回值。fputc函数 也带回一个值:如果输出成功返回输出的字符;如果输出 失败,返回EOF。EOF是在stdio.h中定义的符号常量,值 是-1。
注wh意ile:(cEhO!=FE不O是F)可输出字符。其值是-1。对于文本文件它 表示文件{ 结束(pu因tc为ha任r(c何h)一; 个字符的ASCII码不可能是-1)。 但一个对文于件二(进不制知c文h道=件f是g实e文t际c(本f数p)还;是是-1二是进可制能)的,。A当NS我I 们C处提理供任一个何 函} 数feof( ),可以用它判断函数是否结束。文件结束时返回 1,否则返回0。 如以下对文件的读取过程:
老版本的C 对文件有两种处理方法:
1. 缓冲文件处理系统:系统自动地在内存区为每一个正在 使用的文件名开辟一个缓冲区。从内存向磁盘输出的数据必 须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘。 如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据 输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地 将数据送到程序数据区(给程序变量)。
相关文档
最新文档