内容正文:
第13章 文件
C语言文件
文件类型指针
打开、关闭和检测文件
文件的输入和输出
13.1、C语言文件
文件: 存储在外部介质上的、可由计算机识别的一组相关数据的集合。
程序文件,数据文件
按文件中数据的组织形式(即代码存放形式)分为两种:
ASCII文本文件: 采用ACSII代码存储方式,每个字符占一个字节,存储其ASCII码.
二进制文件: 采用内存数据的存储方式
13.1、C语言文件
‘4’
00110100
00110011
00110010
‘3’
‘2’
图13.1文本文件存放整数432示意图
00000001
10110000
图13.2 二进制文件存放整数432示意图
13.1、C语言文件
缓冲区
x
y
C系统对文件的处理采用缓冲文件系统
系统将键盘、显示器处理为标准设备文件。
10101100
11001010
1010110011001010
10101100
11001010
每个被使用的文件都在内存中开辟了一个区,用来存放该文件的信息。
文件的信息保存在一个名为FILE的结构体类型的变量中。该结构体类型由系统定义。
定义文件型指针变量:
FILE * 指针变量名
如: FILE * fp;
13.2、文件类型指针
缓冲区
x
y
fp
...
1010110011001010
10101100
11001010
10101100
11001010
1、打开文件(fopen 函数)
FILE *fp;
fp=fopen(“c:\file.dat”,“r”);
使用文件的方式详见表12.1
fopen函数是一个返回指针值的函数
当返回值是NULL时,表示无法打开该文件
常采用下列方式打开一个文件:
if ((fp=fopen(“file1”,”r”)==NULL)
{ printf(”can’t open this file
”)
exit(0); /* 关闭文件函数 */
}
2、关闭(fclose函数)
fclose(文件指针);
13.3 打开、关闭和检测文件
3、检测文件是否结束函数(feof()函数)
功能:检测“文件指针” 是否处于文件结束位置。
如果feof()函数返回值为0,表示文件未结束。
如果返回一个非零值,表示文件结束。
13.3 打开、关闭和检测文件
函数的调用格式:
feof(文件指针);
缓冲区
x
y
10101100
11001010
0100010010
010110010
111110010
fp
13.4.1、fputc,fgetc函数
(1)fputc函数:把一个字符写到文件中
如:fputc(ch,fp)
ch:为待输出的字符
fputc函数的返回值:
当输出成功时为ch的值
当输出不成功时为EOF即 -1。
(2)fgetc函数:从指定文件中读入一个字符
如:ch=fgetc(fp);
13.4、文件的输入和输出
缓冲区
ch
10101100
11001010
0100010010
010110010
...
fp
例13.1 编写程序,从键盘输入一个以“$”结尾的字符串,并将它们原样存到名为file1.txt文件中。
#include "stdio.h"
main( )
{FILE *fout; /*定义文件指针*/
char ch;
if((fout=fopen("c:\file1.txt","w"))==NULL)
/*为写打开文件*/
{printf("can not open file
");
exit(0);}
ch=getchar();
while(ch!='$')
{ fputc(ch,fout);/*将ch的值输出到文件中*/
ch=getchar( );
}
fclose(fout);/* 关闭文件*/ }
例13.2 编写程序读入【例12.1】生成的文本文件file1.txt,并将文件内容原样输出到显示屏上。
#include "stdio.h"
main( )
{FILE *fin;/*定义文件指针*/
char ch;
if((fin=fopen("d:\file1.txt","r"))==NULL)
/*为读打开文件*/
{printf("can not open infile
");exit(0);}
wh