第19讲 C语言 文件
合集下载
C语言——File文件操作PPT课件
文件使exi用t(0方); 式:打开文件-->文件读/写-->关闭文件 系}统自动打开和关闭三个标准文件:
❖标准输入------键盘
stdin
例 FILE *fp;
❖标准输出------显示器
stdout
fp= fopen (“c
❖标准出错输出-----显文示件器使用方s式tderr
打开文件fopen “r/rb” (只读)
缓冲文件系统: 非缓冲文件系统:
程序 输入文件缓冲区
指令区
程序数据区 用a 户数据区
磁盘文件 磁盘
缓冲区输出文件缓冲区
§文件类型指针
文件结构体FILE
❖ 缓冲文件系统为每个正使用的文件在内存开辟文件信 息区
❖文件信息用系统定义的名为FILE的结构体描述 ❖FILE定义在stdio.h中
typedef struct { int _fd; //文件号
开失败,为NULL “w+/wb+” (读写)
为读/写建立一个文本
“a+/ab+” (读写)
为读/写打开或建立一个文
文件关闭fclose
❖作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针
❖函数原型:int fclose(FILE *fp) ❖功能:关闭fp指向的文件 ❖返值:正常关文闭件为打0;出开错时时返,回非的0 文件类型指针
#define getchar( ) fgetc(stdin)
o.例h> 从键盘输入字符,逐个 #include <stdio.h>
存到磁盘文件中,直到 main()
out; 输入‘#“为止 [10],outfile[10];
nfile);
❖标准输入------键盘
stdin
例 FILE *fp;
❖标准输出------显示器
stdout
fp= fopen (“c
❖标准出错输出-----显文示件器使用方s式tderr
打开文件fopen “r/rb” (只读)
缓冲文件系统: 非缓冲文件系统:
程序 输入文件缓冲区
指令区
程序数据区 用a 户数据区
磁盘文件 磁盘
缓冲区输出文件缓冲区
§文件类型指针
文件结构体FILE
❖ 缓冲文件系统为每个正使用的文件在内存开辟文件信 息区
❖文件信息用系统定义的名为FILE的结构体描述 ❖FILE定义在stdio.h中
typedef struct { int _fd; //文件号
开失败,为NULL “w+/wb+” (读写)
为读/写建立一个文本
“a+/ab+” (读写)
为读/写打开或建立一个文
文件关闭fclose
❖作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针
❖函数原型:int fclose(FILE *fp) ❖功能:关闭fp指向的文件 ❖返值:正常关文闭件为打0;出开错时时返,回非的0 文件类型指针
#define getchar( ) fgetc(stdin)
o.例h> 从键盘输入字符,逐个 #include <stdio.h>
存到磁盘文件中,直到 main()
out; 输入‘#“为止 [10],outfile[10];
nfile);
c语言文件知识点讲解
c语言文件知识点讲解
在C语言中,文件是由一系列按照特定规则组合在一起的数据,这些数据可以保存在外部存储器上,如磁盘。
文件的主要特点是能够长期保存数据,即使计算机关闭后,数据也不会丢失。
C语言中的文件操作主要有两种:写文件和读文件。
写文件是将变量、数组元素等对象中的数据依次存放到文件中,而读文件则是从文件中读取数据并存放到变量、数组元素等对象中。
这些操作都是通过系统提供的各种文件读写函数来完成的。
一个文件需要有一个唯一的标识,即文件名,以便用户识别和引用。
文件名通常由三个部分组成:文件路径、文件名和文件后缀。
例如,盘符:路径文件主名.扩展名。
此外,根据数据的组织形式,数据文件可以分为文本文件和二进制文件。
文本文件是以ASCII字符的形式存储的,而二进制文件则是以二进制的形式存储的。
以上是C语言中关于文件的一些基本知识点。
如需更多信息,建议查阅相关教材或咨询编程专家。
C语言程序设计电子课件——文件
printf("%d\t%10s\t%c\t%s\n",stu.num, ,stu.sex,stu.addr); }
fclose(fp);}
三、其他读写函数
1.fprintf函数和fscanf函数
是格式化读写函数。它们的读写对象是 磁盘文件,而表示数据终端。
fprintf(文件指针, 格式字符串, 输出表列); 功能将内存中的变量按照指定格式输出 到文件中去
二、fseek函数和随机读写
用fseek可以实现改变文件的位置指针。 fseek 函数的调用形式为 fseek(文件类型指针, 位移量, 起始点) 起始点用0、1、2来代替,其中0 代表文件开
始,1代表当前位置,2代表文件末尾。 位移量是以起始点为基点,向前移动的字节数。
fseek一般用于二进制文件。
fscanf(文件指针, 格式字符串, 输入表列); 功能从文件中读取指定格式的数据到内 存中的变量
2.putw函数和getw函数
用来对磁盘读写一个字(整数)。
putw() 用于将内存中的数据输出到指定的文 件中去。
getw() 用于从指定的磁盘文件中读取一个整数 到内存。
3.fgets函数和fputs函数
【例3】从键盘上输入4个学生的有关数据, 然后把它们转存到磁盘文件上去。
struct student { int num; char name[20];
char sex; char addr[30]; }stu[2]={{9908,"Fengjian",'m',"FuZhou"},
{9909,"Wanghai",'f',"Xiamen"}}; void main() { FILE *fp; int i; if((fp=fopen("readme.dat","wb"))==NULL)
fclose(fp);}
三、其他读写函数
1.fprintf函数和fscanf函数
是格式化读写函数。它们的读写对象是 磁盘文件,而表示数据终端。
fprintf(文件指针, 格式字符串, 输出表列); 功能将内存中的变量按照指定格式输出 到文件中去
二、fseek函数和随机读写
用fseek可以实现改变文件的位置指针。 fseek 函数的调用形式为 fseek(文件类型指针, 位移量, 起始点) 起始点用0、1、2来代替,其中0 代表文件开
始,1代表当前位置,2代表文件末尾。 位移量是以起始点为基点,向前移动的字节数。
fseek一般用于二进制文件。
fscanf(文件指针, 格式字符串, 输入表列); 功能从文件中读取指定格式的数据到内 存中的变量
2.putw函数和getw函数
用来对磁盘读写一个字(整数)。
putw() 用于将内存中的数据输出到指定的文 件中去。
getw() 用于从指定的磁盘文件中读取一个整数 到内存。
3.fgets函数和fputs函数
【例3】从键盘上输入4个学生的有关数据, 然后把它们转存到磁盘文件上去。
struct student { int num; char name[20];
char sex; char addr[30]; }stu[2]={{9908,"Fengjian",'m',"FuZhou"},
{9909,"Wanghai",'f',"Xiamen"}}; void main() { FILE *fp; int i; if((fp=fopen("readme.dat","wb"))==NULL)
C语言--文件
1 / 31
§6.1
一、C文件的概念 文件的概念
文件概述
(第6章 文 章 件)
所谓的“文件”(file)一般指:存储在外部介质上的相关数据的集合 存储在外部介质上的相关数据的集合。存放 存储在外部介质上的相关数据的集合 文件的外部介质有磁带、磁盘、光盘等外部存储器。数据包括:数字、文字、 图形、图象、声音、视频等。在本章所讲的文件是由数字和文字 数字和文字组成的数据文 数字和文字 件。 以前各章中所用到的输入输出,都是以屏幕等(标准输出文件指针:stdout) 为输出设备,以键盘(标准输入文件指针:stdin)为输入设备。而程序运行有时 需要把数据存放到磁盘中,这就要用到磁盘文件。 C语言把文件看作是一个字符(字节)的序列,即由一个一个的字符或字节的 一个字符(字节)的序列 一个字符 数据顺序组成。换句话说,C语言是把每一个文件都看作是一个有序的字节流 有序的字节流。 有序的字节流
§6.1
二、文件系统
文件概述
(第6章 文 章 件)
在C语言中,根据操作系统对文件的处理方式的不同,把文件系统分为缓冲 文件系统和非缓冲文件系统。ANSI C标准采用缓冲文件系统 缓冲文件系统。 缓冲文件系统 缓冲文件系统(又称标准I/O I/O) 缓冲文件系统(又称标准I/O)是指操作系统在内存中为每一个正在使用的文 件开辟一个读写缓冲区。从内存向磁盘输出数据时,必须先送到内存缓冲区, 装满缓冲区后才一起送到磁盘去。如果从向内存读入数据,则一次从磁盘文件 将一批数据输入到内存缓冲区,然后再从内存缓冲区逐个地将数据送到程序数 据区(变量)。 内 存 输入 程序数据区 输出 输出缓冲区 输出(写 输出 写) 输入缓冲区 输入(读 输入 读) 外存 文件
电子技术论 坛 电子发 烧友 7 / 31
C语言文件ppt..
图 8-1 数据在文本文件和二进制文件中的存储区别
8.1 文件概述
文件的分类
根据文件的存取方式,数据文件可分为顺序文件和随机文件。 (1)顺序存取只能依先后次序存取文件中的数据,存取完
第一字节,才能存取第二字节;存取完第n-1字节,才能存取第n 字节。
(2)随机存取也称直接存取,可以直接存取文件中指定的 数据,例如,可以直接存取指定的第i个字节(或字符),而不 管第i-1字节是否已经存取。
if ( ( fp = fopen (file, model) ) == NULL ) { printf ("Cannot open file of %s.\n",file); exit (0); }
else return fp; }
8.2 文件的打开与关闭
8.2.2 文件的关闭
fclose()函数
在以上述方式打开文件时,如果出现“打开”错误, fopen()函数返回空指针值,程序就显示以下信息:
cannot open this file ! 并退出当前的调用过程。
为了以后方便打开文件并且判断是否正确打开文件,可 将以上过程定义成函数,打开文件时调用该函数即可。
FILE *fopenfun(char *file,char *model) { FILE *fp;
ch= fgetc ( fp ) ; 函数功能:
从指定的文件中读取一个字符到变量ch中。 返 回 值: 如读取成功,返回读取的字符,如果在执行fgetc函数
② r方式,只能用于从文本文件中读数据。若指定的文件不存在,则出 现错误信息。文件打开时,文件位置指针指向文件开头。
③ a方式,用于向文件末尾添加数据。若指定的文件存在,将它打开, 并将文件位置指针指向文件末尾,新写入的内容被追加在原有数据之后; 若指定的文件不存在,则创建该文件,这时文件位置指针指向的既是文件 头,也是文件尾。
C语言文件
void main()
XUAN SHANLI
打 { FILE *in,*out;
开 char ch;
源 if((in=fopen("aa.c","r"))==NULL)
文 件
{ printf("cannot open the infile\n");
打
exit(0); }
开 if((out=fopen("ttt.c","w"))==NULL)
大
学
1、文件的分类: 例:短整型数 123: ASCII码: 00110001 00110010 00110011
存储形式:二进制文件:按数据在1 (内49存) 存储2 (形50式) 。 3 (51) 文本 (AS二C进II)制文码件::0一00个00字000符0占11一110个11字节。123
XUAN SHANLI
fp文件指针
format ,格式说明字符串,取%d、%x、%f、%c等;
说明输入转化的格式。
&arg1…&argn,接收输入变量的地址列表。
合
肥 功能:从fp对应的文件的当前位置,顺序读入一个字符序
工 列,按format说明的格式和类型进行转换并存放到对应变
量单元。
p273表9-1 二进制文件
控制符
读/写方式
控制符
读/写方式
“r” 打开文件(已存在)只读 “rb” 打开文件(已存在)只读
XUAN SHANLI
“w”
建立文件(新)只写
“wb”
打开文件(新)只写
“a”
打开文件在尾部追加 “ab” 打开文件在尾部追加
C语言第章:文件PPT教学课件
a+ 以可读和添加方式打开文本文件 rb,wb,ab,r+b,rb+,w+b,wb+,a+b,ab+ 文件,与上述类似
二进制
10.2.2 文件的关闭
int fclose(FILE * stream);
10.2.3 文件的删除 int remove(const char * )
10.2.4 文件的重命名
char *_base; char *_ptr; char *_fname; … }
typedef struct _Iobuf FILE;
文件打开时,系统自动为该文 件定义一个文件结构变量(即文件 信息描述区) ,使该文件与其对应 的文件结构变量建立联系。程序中 可定义一个文件类型指针,使它指 向该文件结构变量。
对文件的读写处理都是通过指向文 件结构变量的指针进行。指向文件结构 变量的指针定义如下:
FILE *文件类型指针名;
如果程序中同时要处理几个文件, 则应该定义几个文件类型指针,例如:
FILE *fp1,*fp2,…,*fpn;
标准I/O提供了三种类型的缓存
(1) 全缓存 在这种情况下,当缓存被充满之后系统才进行实际的
exit(1); } ch=fgetc(fp); while (ch!=EOF) { putchar(ch); ch=fgetc(fp); } printf("argc is %d",argc); fclose(fp); }
(2) 每次一行的读写
char * fgets(char * buf, int n, FILE * stream)
注意: l 由于是将usigned char转换为int,因 此正常字符的范围只能是0255 l ANSI C中还定义了getc函数,该函数 可能是由宏实现的,因此效率可能比较 高。 l ANSI C中还定义了getchar函数,该函 数相当于fgetc(stdin)。
二进制
10.2.2 文件的关闭
int fclose(FILE * stream);
10.2.3 文件的删除 int remove(const char * )
10.2.4 文件的重命名
char *_base; char *_ptr; char *_fname; … }
typedef struct _Iobuf FILE;
文件打开时,系统自动为该文 件定义一个文件结构变量(即文件 信息描述区) ,使该文件与其对应 的文件结构变量建立联系。程序中 可定义一个文件类型指针,使它指 向该文件结构变量。
对文件的读写处理都是通过指向文 件结构变量的指针进行。指向文件结构 变量的指针定义如下:
FILE *文件类型指针名;
如果程序中同时要处理几个文件, 则应该定义几个文件类型指针,例如:
FILE *fp1,*fp2,…,*fpn;
标准I/O提供了三种类型的缓存
(1) 全缓存 在这种情况下,当缓存被充满之后系统才进行实际的
exit(1); } ch=fgetc(fp); while (ch!=EOF) { putchar(ch); ch=fgetc(fp); } printf("argc is %d",argc); fclose(fp); }
(2) 每次一行的读写
char * fgets(char * buf, int n, FILE * stream)
注意: l 由于是将usigned char转换为int,因 此正常字符的范围只能是0255 l ANSI C中还定义了getc函数,该函数 可能是由宏实现的,因此效率可能比较 高。 l ANSI C中还定义了getchar函数,该函 数相当于fgetc(stdin)。
《c语言文件操作》PPT课件
if((fp=fopen(filename,"w"))==NULL) {
printf("cannot open file\n"); exit(0); /*终止程序*/} ch=getchar( ); /*接收执行scanf语句时最后输入的回车符 */ ch=getchar( ); /* 接收输入的第一个字符 */ w运h行ile情(c况h!如='下#'{:
§13.1 C文件的有关概念
13.1.6 文件的位置指针
位置指针用来指示当前的读写位置。 一般情况下,在对字符文件进行顺序读写时,文件的位置指针指向 文件开头,这时如果对文件进行读的操作,就读第一个字符,然后 文件的位置指针顺序向后移一个位置,在下一次执行读的操作时, 就将指针指向的第二个字符读入。依此类推,直到遇文件尾.
§13.1 C文件的有关概念
13.1.4 文件缓冲区
ANSI C标准采用“缓冲文件系统”处理文件. 缓冲文件系统:系统自动地在内存区为每一个正 在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据必须先送到内存中的缓冲 区,装满缓冲区冲区
文件
strcpy(str[k], strcpy(str[i],str[k]);
例} 13t.em2p);}将一个磁盘文件中的信息复制到另一个磁 if(盘(fp文=fo件pe中n("D。:\\CC\\temp\\string.dat","w"))==NULL) {
gets(str[i]); for(i=0;i<n-1;i++) {k=i;
for( j=i+1;j<n;j++) if(strcmp(str[k],str[j])>0) k=j;
printf("cannot open file\n"); exit(0); /*终止程序*/} ch=getchar( ); /*接收执行scanf语句时最后输入的回车符 */ ch=getchar( ); /* 接收输入的第一个字符 */ w运h行ile情(c况h!如='下#'{:
§13.1 C文件的有关概念
13.1.6 文件的位置指针
位置指针用来指示当前的读写位置。 一般情况下,在对字符文件进行顺序读写时,文件的位置指针指向 文件开头,这时如果对文件进行读的操作,就读第一个字符,然后 文件的位置指针顺序向后移一个位置,在下一次执行读的操作时, 就将指针指向的第二个字符读入。依此类推,直到遇文件尾.
§13.1 C文件的有关概念
13.1.4 文件缓冲区
ANSI C标准采用“缓冲文件系统”处理文件. 缓冲文件系统:系统自动地在内存区为每一个正 在使用的文件开辟一个缓冲区。 从内存向磁盘输出数据必须先送到内存中的缓冲 区,装满缓冲区冲区
文件
strcpy(str[k], strcpy(str[i],str[k]);
例} 13t.em2p);}将一个磁盘文件中的信息复制到另一个磁 if(盘(fp文=fo件pe中n("D。:\\CC\\temp\\string.dat","w"))==NULL) {
gets(str[i]); for(i=0;i<n-1;i++) {k=i;
for( j=i+1;j<n;j++) if(strcmp(str[k],str[j])>0) k=j;
C语言程序设计实用教程课件:文件
FILE *文件指针名; … 文件指针名=fopen("文件名","文件使用方式");
目录
打开文件 – 文件使用方式
文件的打开
符号
r(read) w(write) a(append) t(text) b(binary)
+
意义
以只读方式打开一个文本文件,若文件不存在,则返回空指针 以只写方式打开或创建一个文本文件,并覆盖原有数据 以追加方式打开或创建一个文本文件,并从文件末尾写数据 文本文件,可省略不写 二进制文件 读和写
目录
字符的读写
写字符 – fputc()函数 fputc(字符量,文件指针); 将一个字符写到磁盘文件上去 返回值: – 调用成功时返回输出的字符; – 失败时返回EOF。 举例
fputc('a', fp);
– 表示向文件指针变量fp指向的文件写入一个字符’a’。
目录
案例分析:字符的读写
– 举例:
址,即指向一个文件。
FILE定*义fp了; 一个结构体FILE类型的指针变量:fp。
目录
文件的打开
打开文件 – 方法: 为了打开一个文件,首先要为该文件定义一个文件类型指针; 然后用C语言提供的fopen()函数打开文件。 fopen函数有两个参数: – “文件名”与“文件使用方式”。 – 它们均是字符串。 一般形式:
fgets(str, n, fp);
– 从fp所指的文件中读出n-1个字符送入字符数组str中。
目录
字符串的读写
写字符串 – fputs()函数 fputs(字符数组名, 文件指针); 向指定的文件输出一个字符串,‘\0’结束符不输出。其中字 符串可以是字符串常量、字符数组名或指针变量。 返回值: – 调用成功时,返回0; – 否则返回EOF。 举例
目录
打开文件 – 文件使用方式
文件的打开
符号
r(read) w(write) a(append) t(text) b(binary)
+
意义
以只读方式打开一个文本文件,若文件不存在,则返回空指针 以只写方式打开或创建一个文本文件,并覆盖原有数据 以追加方式打开或创建一个文本文件,并从文件末尾写数据 文本文件,可省略不写 二进制文件 读和写
目录
字符的读写
写字符 – fputc()函数 fputc(字符量,文件指针); 将一个字符写到磁盘文件上去 返回值: – 调用成功时返回输出的字符; – 失败时返回EOF。 举例
fputc('a', fp);
– 表示向文件指针变量fp指向的文件写入一个字符’a’。
目录
案例分析:字符的读写
– 举例:
址,即指向一个文件。
FILE定*义fp了; 一个结构体FILE类型的指针变量:fp。
目录
文件的打开
打开文件 – 方法: 为了打开一个文件,首先要为该文件定义一个文件类型指针; 然后用C语言提供的fopen()函数打开文件。 fopen函数有两个参数: – “文件名”与“文件使用方式”。 – 它们均是字符串。 一般形式:
fgets(str, n, fp);
– 从fp所指的文件中读出n-1个字符送入字符数组str中。
目录
字符串的读写
写字符串 – fputs()函数 fputs(字符数组名, 文件指针); 向指定的文件输出一个字符串,‘\0’结束符不输出。其中字 符串可以是字符串常量、字符数组名或指针变量。 返回值: – 调用成功时,返回0; – 否则返回EOF。 举例
C语言程序设计(慕课版)文件
行u文ns件ig操ned作c。har *curp; //文件读写位置指针
unsigned istemp;
//临时文件,指示器
short token;
//用于有效性检查
}FILE;
在C语言中对每个正在使用的文件, 用一个指针变量 指向对应的文件信息区, 这个指针变量称为文件指针。
定义文件指针的一般形式为: FILE *指针变量标识符;
文件的分类
例:整数1949
文本文件 ASCII文件 占用4个字节
00110001 00111001 00110100 00111001
'1'
'9'
'4'
'9'
二进制文件
00000111 10011101 占用2个字节
文件的操作流程 1、建立/打开文件 2、从文件中读数据或向文件中写数据 3、关闭文件
若文件结束或调用失败,则返回EOF。
数据块读写函数
fwrite(p, size, n, fp);
运用数据p:块某输类入型输指出针函;数可建立整型、实型、 结构体类sni:z型e此:等次某各写类种入型类文数型件据的的存二数储进据空项制间数文的;件字。节数;
fp:文件指针变量。
函数功能: 将p指向的存储区中n个数据项写入fp所指向的文件。 若输出操作成功,返回写入的数据项数; 若输出操作失败,则返回0。
数据块读写函数
fread(p, size, n, fp); p:某类型指针; size:某类型数据存储空间的字节数; n:此次从文件中读取的数据项数; fp:文件指针变量。
函数功能: 从fp所指向的文件中,读取n个数据项,读入p所指 向的存储区域。 若输入操作成功,返回实际读出的数据项个数 若文件结束或调用失败,则返回0。
C语言第十九讲课件
中写入数据,每写入一个数据,文件指针向下移动若 干字节。 文件类型:ASCII码文件
18
§13.5 文件的定位
文件中都有一个指针,指向当前的读写位置,文 件每进行一次读写操作,文件指针就会自动指向 下一个位置。
如果想改变这种规律,就需要强制地使文件指针 指向特定的位置,需要使用相应的函数来实现。
19
一、rewind()函数
调用格式: rewind(fp) 功能:使fp所指向的文件指针重新返回文件
的开头。 返回值:无
20
二、ftell()函数
调用格式: ftell(fp) 功能:返回fp所指向的文件指针的当前位置。 返回值:长整型,其值是文件指针相对于文
件头的字节数。
21
例2 从键盘上输入10个整数写入data2.dat中并输出
2
二、文件的组织形式
文件可分为ASCII码文件和二进制文件。 ASCII文件:又称为文本文件(.txt)文件,其中每个字节
存放一个ASCII码字符。 ASCII码文件占存储空间大,且要花费时间转换(要进行二 进制形式与ASCII码形式之间的转换) 二进制文件:是将内存中的数据按在内存中的存储形式 原样输出到磁盘上存放。 二进制文件节省存储空间,不需要转换,但不能直接输出 字符形式,也就是说,不能直观地显示文件的内容
文件的打开的常用格式: if((fp=fopen("aa","r"))==NULL) { printf("cannot open this file\n"); exit(0);}
8
二、文件的关闭
方法: fclose(文件指针); 例如:fclose(fp); 将指针fp指向的文件关闭。所谓文件关闭就是文件指 针与文件的指向关系中断。
18
§13.5 文件的定位
文件中都有一个指针,指向当前的读写位置,文 件每进行一次读写操作,文件指针就会自动指向 下一个位置。
如果想改变这种规律,就需要强制地使文件指针 指向特定的位置,需要使用相应的函数来实现。
19
一、rewind()函数
调用格式: rewind(fp) 功能:使fp所指向的文件指针重新返回文件
的开头。 返回值:无
20
二、ftell()函数
调用格式: ftell(fp) 功能:返回fp所指向的文件指针的当前位置。 返回值:长整型,其值是文件指针相对于文
件头的字节数。
21
例2 从键盘上输入10个整数写入data2.dat中并输出
2
二、文件的组织形式
文件可分为ASCII码文件和二进制文件。 ASCII文件:又称为文本文件(.txt)文件,其中每个字节
存放一个ASCII码字符。 ASCII码文件占存储空间大,且要花费时间转换(要进行二 进制形式与ASCII码形式之间的转换) 二进制文件:是将内存中的数据按在内存中的存储形式 原样输出到磁盘上存放。 二进制文件节省存储空间,不需要转换,但不能直接输出 字符形式,也就是说,不能直观地显示文件的内容
文件的打开的常用格式: if((fp=fopen("aa","r"))==NULL) { printf("cannot open this file\n"); exit(0);}
8
二、文件的关闭
方法: fclose(文件指针); 例如:fclose(fp); 将指针fp指向的文件关闭。所谓文件关闭就是文件指 针与文件的指向关系中断。
C语言程序设计课件:文件
❖
{
❖
printf("Failed to open this file.\n");
❖
exit(0);
❖
}
❖
while((ch=getchar())!='\n')❖Biblioteka fputc(ch,mp);
❖
fclose(mp);
❖
return 0;
❖}
❖ 在程序运行输入窗口内输入:
❖ HOW ARE YOU!
❖ 返回编辑窗口后,到d:\exam文件下打开test.txt文件,可以看 到文件的内容为“HOW ARE YOU!”。
❖ 文件读写函数的应用;
12.1文件概述
❖ 文件是指有组织的存储在外部介质(内存以外的存储介质)上数据 的集合。每一个文件必须有一个文件名,一个文件名由文件路径、 文件名主干和文件名后缀三部分组成。计算机系统都包括文件系 统,按文件名对文件进行组织和存取管理。
❖ 任何应用软件的设计及应用,都离不开对数据的存储与调用,在 C语言应用设计初期阶段,对与数据管理正处于文件管理阶段, 因此C语言提供了强大的文件管理功能。在外部介质上写(存储) 数据,首先必须建立一个文件,然后向它写入数据。要想获取保 存在外部介质上的数据,首先必须找到指定的文件,然后再读取 该文件中数据。
❖ 1.fputc()函数 ❖ 一般调用形式为:
❖ fputc(ch,mp); ❖ 参数:ch是要写入文件的字符,可以是字符常量,也可以是字符
变量,很多地方将变量ch定义为整型变量,因为整型变量可以赋 值为字符常量或变量;mp是FILE类型的数据文件指针变量。
❖ 功能:将字符ch的值写到mp所指向的文件中。 ❖ 返回值:如果执行成功,返回值就是所写的字符;如果执行失败,
C语言-文件PPT课件
21.04.2020
20
《C语言程序设计》
8.3 文件的读写
8.3.1文件字符读/写
【说明】 (1)fgetc为字符读函数,因此之前必须以读或读写方式打 开文件; (2)在执行fgetc读字符时遇到文件结束符或出错,则函数 返回一个文件结束标志EOF(-1)。当形参fp为标准输入文件 指针stdin时,则读文件字符函数fgetc(stdin)与终端输入函数 getchar()具有完全相同的功能。
21.04.2020
14
《C语言程序设计》
8.2 文件的打开与关闭
8.2.1 文件的打开操作
【说明】 (3)用“r +”、“w+”、“a+”方式打开文件时,既可以输 入也可以输出,不过三种方式是有区别的;“r+”方式要求必 须文件存在;“w+”方式则建立新文件后进行读写;“a+”方 式则保留文件原有的数据,进行追加或读的操作。 (4)在用文本文件向计算机输入时,应将回车和换行两个 字符转换为一个换行符;在输出时,应将换行符转换为回车 和换行两个字符。在用二进制文件时,不需进行这种转换, 因为在内存中的数据形式与输出到外部文件中的数据形式完 全一致,一一对应。
19
《C语言程序设计》
8.3 文件的读写
8.3.1文件字符读/写
1. 字符输入函数fgetc 从指定文件读入一个字符,该文件必须是以读或读写方式 打开的。 fgetc函数的调用形式为:
字符变量=fgetc(文件指针); 例如,从fp指向的文件中读取一个字符并赋给字符变量ch, 则可写成: ch=fgetc(fp);
《C语言程序设计》
C语言程序设计
第8章 文 件
21.04.2020
C语言 文件
数据文件打开的mode的取值表 数据文件打开的mode的取值表
Mode 为输入打开一个文本文件 为输出打开一个文本文件 打开一个文本文件在尾部追加 为输入打开一个二进制文件 为输出打开一个二进制文件 打开一个二进制文件在尾部追加 为读/ 为读/写打开一个文本文件 为读/ 为读/写建立一个新的文本文件 为读/ 为读/写打开一个文本文件 为读/ 为读/写打开一个二进制文件 为读/ 为读/写建立一个新的二进制文件 为读/ 为读/写打开一个二进制文件 含 义 只读) r(只读) 只写) w(只写) 追加) a(追加) rb(只读) rb(只读) wb(只写) wb(只写) ab(追加) ab(追加) r+(读写) r+(读写) w+(读写) w+(读写) a+(读写) a+(读写) rb+(读写) rb+(读写) wb+(读写) wb+(读写) ab+(读写) ab+(读写)
C文件概述——文件的概念 文件概述——文件的概念
C语言程序对文件的处理是通过调用输入/输出函数实现的。 语言程序对文件的处理是通过调用输入/输出函数实现的。
输入( 输入(读) 磁盘文件
内存
设备文件 输出(写) 输出(
C文件概述——文件的分类 文件概述——
1.按文件的结构形式分类: 1.按文件的结构形式分类: 按文件的结构形式分类 二进制文件(节省空间)和字符文件(对应关系) 二进制文件(节省空间)和字符文件(对应关系) 2.按文件的读写方式分类: 2.按文件的读写方式分类: 按文件的读写方式分类 读写顺序) 顺序文件和随机文件 (读写顺序) 3.按文件存储的外部设备分类: 3.按文件存储的外部设备分类: 按文件存储的外部设备分类 磁盘文件和设备文件. 磁盘文件和设备文件. 4.按系统对文件的处理方法分类: 4.按系统对文件的处理方法分类: 按系统对文件的处理方法分类 缓冲文件系统和非缓冲文件系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、标准文件操作的打开操作(P216) 、标准文件操作的打开操作( ) 使用fopen函数打开文件的一般格式: 函数打开文件的一般格式: 使用 函数打开文件的一般格式 文件指针名=fopen("文件名 ,"操作方式 ; 文件名", 操作方式 操作方式") 文件指针名 文件名 例如: 例如:FILE *fp1; ; fp1=fopen ("c:\\yhy\\abc.txt","w") ; , 说明: 说明: 1)注意文件名中的斜杠的写法为:" \ \" )注意文件名中的斜杠的写法为: 2)文件的操作方式详见表 )文件的操作方式详见表11.1 3)如果 函数成功的打开了一个文件, )如果fopen函数成功的打开了一个文件,该 函数成功的打开了一个文件 函数将返回一个FILE指针,否则返回值为空指针 指针, 函数将返回一个 指针 NULL。 。
例3 在屏幕上显示读出文件c:\tmp\yhy.txt中的字符。 在屏幕上显示读出文件 中的字符。 中的字符 注意: 注意:feof()是测试文件 是测试文件 #include <stdio.h> 指针是否已到文件末尾。 指针是否已到文件末尾。 void main() 如果到末尾, 如果到末尾,为true。 。 { char ch; FILE *fp1; fp1=fopen("c:\\tmp\\yhy.txt","r"); while(!feof(fp1)) { ch=fgetc(fp1); putchar(ch); } putchar('\n'); fclose(fp1); }
பைடு நூலகம்
标准文件操作对应的磁盘文件系统为缓冲文件系 标准文件操作对应的磁盘文件系统为缓冲文件系 也称标准文件系统 高层文件系统。 标准文件系统或 统,也称标准文件系统或高层文件系统。标准文件系 统的功能强、使用方便。 统的功能强、使用方便。
2)在文件操作中,不使用缓冲区的磁盘文件系 )在文件操作中, 称为非标准文件系统 也称底层文件系统 非标准文件系统, 底层文件系统。 统,称为非标准文件系统,也称底层文件系统。 在使用C语言编写程序时, 在使用 语言编写程序时,如采用非标准文件系 语言编写程序时 则要求程序员熟悉操作系统,编程难度大。 统,则要求程序员熟悉操作系统,编程难度大。但是 程序的执行效率高。 程序的执行效率高。 4、文件存取的4种方式 、文件存取的 种方式 C语言的文件称为流式文件,文件存取操作的数 语言的文件称为流式文件, 语言的文件称为流式文件 据单位是字节,提供了4种文件存取方法 种文件存取方法: 据单位是字节,提供了 种文件存取方法: 1)一次读写一个字符 ) 2)一次读写一个字符串 ) 3) 格式化读写,按照指定的数据格式存取 ) 格式化读写, 4)成块读写,也称做按记录读写 )成块读写,
3、标准文件操作的一般步骤(补充) 、标准文件操作的一般步骤(补充) 标准文件系统借助为FILE数据结构对文件进行 标准文件系统借助为 数据结构对文件进行 操作,利用文件指针读写文件。 操作,利用文件指针读写文件。 标准文件操作的一般步骤如下: 标准文件操作的一般步骤如下: 1)定义FILE 类型的文件指针; )定义 类型的文件指针; 2)使用 函数打开文件; )使用fopen函数打开文件; 函数打开文件 3)使用P215上的 对函数对文件进行读写; )使用 上的4对函数对文件进行读写 上的 对函数对文件进行读写; 4)使用 函数关闭文件。 )使用fclose函数关闭文件。 函数关闭文件
3、标准文件与非标准文件 、 1)在文件操作中,为了提高系统的效率,利用 )在文件操作中,为了提高系统的效率, 缓冲区将对磁盘文件的频繁逐次访问变为批量访问, 缓冲区将对磁盘文件的频繁逐次访问变为批量访问, 标准文件操作。 称为标准文件操作 称为标准文件操作。 程序 数据区 输出 输入 输出 输出、输出 输出、 文件缓冲区 输入 磁盘
4种存取方式采用的函数: 种存取方式采用的函数:
二、标准文件操作 ( P215)
1、标准文件FILE结构指针 、标准文件 结构指针 标准文件系统为每一个文件开辟了一个“文件 标准文件系统为每一个文件开辟了一个“ 信息区” 用于存放文件的缓冲区地址、 信息区”,用于存放文件的缓冲区地址、文件当前的 读写位置、文件的操作方式等。 读写位置、文件的操作方式等。 所有的文件操作都需要FILE类型的指针,FILE 类型的指针, 所有的文件操作都需要 类型的指针 是库文件中定义的结构体的别名。 是库文件中定义的结构体的别名。 2、文件指针的定义形式 、 FILE *指针名; 指针名; 指针名 例如: 例如: FILE *fp; 注意: 注意: 不要写成 struct FILE *fp;
5、关闭标准文件(P218) 、关闭标准文件( ) 使用fclose函数关闭文件的一般格式: 函数关闭文件的一般格式: 使用 函数关闭文件的一般格式 fclose(FILE 指针名 ; 指针名) 例如: 例如: fclose (fp1) ; 6、标准文件的读写 、 C语言提供了 个函数对标准文件进行读写。 语言提供了8个函数对标准文件进行读写 语言提供了 个函数对标准文件进行读写。 1)一次读写一个字符:fgetc、fputc )一次读写一个字符: 、 2)一次读写一个字符串:fgets、fputs )一次读写一个字符串: 、 3) 格式化读写:fscanf、fprintf ) 格式化读写: 、 4) 成块读写:fread、fwrite ) 成块读写: 、
个英文大写字母写入c:\tmp\yhy.txt 文件中。 文件中。 例1 将26个英文大写字母写入 个英文大写字母写入 #include <stdio.h> void main() { char ch; FILE *fp1; fp1=fopen("c:\\tmp\\yhy.txt","w"); for(ch='A';ch<='Z'; ch++) fputc(ch,fp1); fclose(fp1); }
例2
在屏幕上显示读出文件c:\tmp\yhy.txt的字符串。 在屏幕上显示读出文件 的字符串。 的字符串
注意: 注意:文件内容为 #include <stdio.h> one void main() two { char str[80]; three FILE *fp1; fp1=fopen("c:\\tmp\\yhy.txt","r"); while(!feof(fp1)) { fgets(str,80,fp1); :显示的结果为 注意: 注意 printf("%s",str); one } two three fclose(fp1); three }
个字符串写入c:\tmp\yhy.txt 文件中。 文件中。 例1 将3个字符串写入 个字符串写入 #include <stdio.h> void main() { FILE *fp1; fp1=fopen("c:\\tmp\\yhy.txt","w"); fputs("one\n",fp1); fputs("two\n",fp1); fputs("three\n",fp1); fclose(fp1); }
7、读写文件中字符的函数(P218) 、读写文件中字符的函数( ) 从磁盘文件读取字符的函数是fgetc() ,fgetc() 函 从磁盘文件读取字符的函数是 数的一般格式: 数的一般格式: fgetc(FILE 指针名 ; 指针名) 例如: 例如: fgetc (fp1) ; 将字符写入磁盘文件的函数是fputc(),fputc() 函 , 将字符写入磁盘文件的函数是 数的一般格式: 数的一般格式: fputc(字符,FILE 指针名 ; 字符, 指针名) 字符 例如: 例如: fputc (ch,fp1) ; ,
个英文小写字母加到c:\tmp\yhy.txt 文件中。 文件中。 例2 将26个英文小写字母加到 个英文小写字母加到 #include <stdio.h> void main() { char ch; FILE *fp1; fp1=fopen("c:\\tmp\\yhy.txt","a"); for(ch='A';ch<='Z'; ch++) fputc(ch,fp1); fclose(fp1); }
9、格式化读写函数(P223) 、格式化读写函数( ) 有时需要按照规定的格式进行文件读写。 有时需要按照规定的格式进行文件读写。 从磁盘文件按照格式读取数据的函数是fscanf() , 从磁盘文件按照格式读取数据的函数是 fscanf() 函数的一般格式: 函数的一般格式: fscanf(FILE 指针名,"格式控制串 ,地址列表 ; 指针名, 格式控制串 地址列表) 格式控制串", 例如: (fp1, "%d", 例如: fscanf (fp1, "%d",&x) ; 将数据写入磁盘文件的函数是fprintf(),fprintf() , 将数据写入磁盘文件的函数是 函数的一般格式: 函数的一般格式: fprintf(FILE 指针名,"格式控制串 ,数据列 指针名, 格式控制串 格式控制串", 表) ; 例如: 例如: fprintf (fp1, "%d",x) ; , ,
例2 (续) 在屏幕上显示读出文件 c:\tmp\yhy.txt的 的 字符串。(正确程序) 。(正确程序 字符串。(正确程序) #include <stdio.h> void main() { char str[80]; FILE *fp1; fp1=fopen("c:\\tmp\\yhy.txt","r"); while(!feof(fp1)) { if (fgets(str,80,fp1)!=NULL) printf("%s",str); } fclose(fp1); }