C语言程序与设计第十章

合集下载

C语言程序设计教程第10章_北京邮电大学出版社

C语言程序设计教程第10章_北京邮电大学出版社
2016/10/4
C语言程序设计教程
第10章 文件
7
内存 程序数据区 输出 输入
输出文件缓冲区
输出 磁盘 输入 输入文件缓冲区
在C语言中,无论是使用标准文件系统还 是非标准文件系统,都是利用I/O库函数完成 文件操作的。
2016/10/4
C语言程序设计教程
第10章 文件
8
11.2 标准文件操作
一、标准文件FILE结构指针 要调用一个文件,需要有以下的信息: ★文件当前的读写位置 ★与该文件对应的内存缓冲区的地址 ★文件操作方式等
2016/10/4
C语言程序设计教程
第10章 文件
9
3、在程序中定义一个指针变量,用以保存已打开文件所对 应的FILE结构在内存的地址,此后用户程序就可用此 FILE指针来实现对指定文件的存取操作。定义文件指针 变量的一般形式为: FILE *文件结构指针变量名 例如:FILE *fp; 注意: 1)只有通过文件指针,才能调用相应的文件。
2016/10/4
C语言程序设计教程
第10章 文件
20
例2、函数fputs和fgets的使用 #include <stdio.h> main() { FILE *fp; char *ch1="How are you!"; char ch2[20]; clrscr(); fp=fopen(“d:\\infile.txt","w+"); if(fp==NULL) { printf(“can not open this file\n"); exit(0); } fputs(ch1,fp); rewind(fp); /*用于把文件指针移到文件的开头。*/ fgets(ch2,strlen(ch)+1,fp); printf("%s",ch2); } 2016/10/4 C语言程序设计教程

C语言程序设计 课件 第十章(适于清华谭浩强版)

C语言程序设计 课件 第十章(适于清华谭浩强版)
定义了文件指针以后,意味着:开辟一 个FILE结构的空间,用指针fp指向它。
2021/7/13
4
10.3文件的打开与关闭
10.3.1 文件的打开 C语言的文件操作都用函数实现。 fopen()函数用来打开文件。
fp=fopen(文件名,使用文件方式); fp为已定义的文件指针。 例: FILE *fp;
数据块的读入和写出。
顺序文件。
fread(datapointer,size,count,fp)
fwrite(datapointer,size,count,fp)
其中,datapointer是读写存取数据的
地址。读入数据时,把要读入的数据存放
在它指定的区域。输出数据时,从该地址
指定的区域开始输出。
size * count 读写的总字节数。
使文件指针与文件“脱钩”,关闭以后,不
能再对该文件进行操作。
fclose函数
fclose(文件指针)
例如:fclose(fp);
文件操作的顺序:
打开——》处理——》关闭
保证文件操作的正常执行。
与缓冲区有关。
2021/7/13
8
10.4 文件的读写
10.4.1 fputc函数与fgetc函数
1、fputc()
第10章 文件
10.1 C文件概述
10.1.1 概念 存储在外部介质上数据的集合,是操作 系统管理数据的单位。 外部介质: 磁盘 (输入、输出都可)
终端键盘 ——输入文件 显示器 打印机 ——输出文件
2021/7/13
1
10.1.2 数据流
C语言把文件看作数据流。
字节的序列。
字节流或二进制流。
ASCII文件与二进制文件。

C语言程序设计第10章文件及其应用

C语言程序设计第10章文件及其应用

学一学
1.定义文件指针 一般形式为: FILE * fp; 其中fp就是所定义文件指针。 FILE类型 以及所有的文件读写函数和相关常量都定 义在文件stdio.h中,在源程序的开头要 包含头文件 stdio.h 。
学一学
2.打开文件 C语言中,使用fopen函数来打开文件。打开文件是使 一个文件指针变量指向被打开文件的结构变量,以便通 过该指针变量访问打开的文件。fopen函数的调用形式 如下: fopen(chFileName,mode); 以mode 方式打开文件chFileName。其中,参数 chFileName 是将要读写文件的文件名,mode为文件 的操作方式。若文件打开成功,返回一个文件指针,若 打开失败,则返回空值NULL,NULL在stdio.h中被定 义为0。文件操作方式mode是一个整数,其取值及含 义如表10-1所示。

流程图
开始 定义文件指针fp,定义整型数组 iArray[5],定义循环变量i 以写二进制文件方式打开文件 fp=fopen("test.dat","wb") N i=0
fp==NULL Y
i<5 Y 输入1个整数存入 数组元素iArray[i]
N
i++
把数组iArray中5 个整数写入文件
显示出错信息 关闭文件 exit(0)
试一试
问题10.1编一程序从键盘输入一串字符“may friendship forever! ”,然后保存在文件myInfo.txt中。 【解题步骤】 1.定义文件指针fp; 2.定义字符数组chInfo用来存输入的字符串; 3.以写文本文件方式打开文件myInfo.txt; 4.如果打开文件失败,则输出错误信息并结束程序; 5.否则,打开文件成功,则从键盘输入数据; 5.将字符数组chInfo中的字符写入文件myInfo.txt; 6.关闭文件。

《C语言程序设计》第十章位运算(完)

《C语言程序设计》第十章位运算(完)
}
运行结果: a and b:0x81 a and b:0xbb a and b:0x3a
1 0 1 1 1 0 0 1 a:0xb9 a&b 1 0 0 0 0 0 1 1 b:0x83
1 0 0 0 0 0 0 1 结果:0x81
1 0 1 1 1 0 0 1 a:0xb9 a|b 1 0 0 0 0 0 1 1 b:0x83
unsigned char b=248 b>>2 1 1 1 1 1 0 0 0
补零
00111110
舍弃
不带符号的操作数右移位时,左端出现的空 位补零。
unsigned char b=248 b>>2 1 1 1 1 1 0 0 0
补零
00111110
舍弃
说明:
4) 每右移一位相当于操作数除2。 5) a>>2,b>>2形式的操作并不改变操作数a,b
b=a<<2 舍弃
0 0 0 1 1 0 1 1 a:0x1b
0 1 1 0 1 1 0 0 b:0x6c 补零
不带符号的操作数右移位时,左端出现的空 位补零。
带符号的操作数右移位时,左端出现的空位 按原最左端的位复制,无论什么操作数,移 出右端的位被舍弃。
例[10-4]:右移位操作。
void main(){ char a=-8; unsigned char b=248; printf("signed a right_shift 2 bit:%d\n", a>>2 ); printf("unsigned b right_shift 2 bit:%d\n", b>>2 ); }

高树芳C语言程序设计--第十章

高树芳C语言程序设计--第十章

[解决方案]定义结构体类型变量存储学生信息,
使用scanf从键盘输入数据,使用fprintf函数按格 式输出数据到文件(生成data3.txt文件)。
程序代码
10
10.2
文件的读写
相关知识:
1.文件的读写 2.格式化读写函数
11
10.2
文件的读写
[课堂训练10-1] 1.使用Windows的记事本建立一个文件,其 中写入15个任意整数,数据之间用逗号分隔。 编程输出该文件所有的奇数。 2.编程以只读方式打开案例10-3中的 data3.txt文件,在屏幕上输出所有学生的数 据。
第10章
文件
知识目标: 1. 理解文件和文件指针的概念 2.掌握文件的打开和关闭方法 3.掌握文件的读写操作 4.掌握文件的定位与随机读写操作
1
第10章 文件 能力目标: 1. 会打开和关闭文件 2.会对文件进行读写和定位等操作
本章内容: 文件的定义,文件型指针,文件的打开与关闭,文件 的读写,文件的定位与随机读写。
2
第10章 10.1 10.2 10.3 10.4
文件
文件的打开与关闭 文件的读写 文件的定位和随机读写 知识拓展
3
10.1 文件的打开与关闭
案例10-1
输出文件中的整数及其和
4
10.1 文件的打开与关闭
案例10-1 [案例任务]
输出文件中的整数及其和
使用Windows的记事本在磁盘上与C程序文件在同一目 录下建立一个文件名为“data1.txt”的文本文件(如 图10-1所示),以空格、制表符或回车为分隔符输入 任意个整数,设计C程序,以只读方式打开此文件,若 该文件不存在,则输出“不能打开文件!”,若打开 成功,则输出所有整数,以及整数的个数和它们之和。

C程序设计(第四版)第10章 C语言综合应用程序设计

C程序设计(第四版)第10章 C语言综合应用程序设计

四、预处理命令#include的应用
1、#include命令经过预处理后,会将其后有关文件的内容 拷贝到命令所在的源程序文件中。 2、在上一个例子中,程序要能够编译运行,需建立一个工 程文件file.prj,其内容为: file1.c file2.c 然后对file.prj文件编译运行即可。 3、也可以在file1.c文件开头加一预处理命令: #include<stdio.h> #include<file2.c> int n=2; main() { …… } 对file1.c文件直接编译运行即可。
模块化程序设计开发步骤
讨论以c语言程序模块化设计小规模软件开发的一般步骤:
1、通过与最终用户的交流,明确软件应达到的功能,写出相 应的“功能说明”。 2、根据“功能说明”,确定存放有关数据的数据结构。 3、根据数据结构确定算法。
4、根据数据结构和算法,采用某种计算机语言编写的程序源
代码。 5、对程序进行调试和测试。 6、最后整理出有关的文档资料。
利用外部变量实现程序模块file1.c与程序模块file2.c之间的通信。 设程序模块文件 file1.c 的内容如下: #include<stdio.h> int n=2; /* 定义n为全局变量*/ main( ) { printf(“%d”,n); proc1( ); printf(“%d\n”,n); } 程序模块文件file2.c 的内容如下: extern int n; /* 说明n为外部变量*/ proc1() { n = 10 ; } 程序编译连接生成可执行文件,执行结果为: 2 10
三、模块化程序中模块间的通信 1、使用外部变量 即一个程序文件file1.c中定义一个外部 变量,另一个程序文件file2.c中的函数 可以通过外部变量说明后来使用这个变量, 以实现模块间的通信。

新编C语言程序设计教程(本科)第10章

新编C语言程序设计教程(本科)第10章

第10章指针类型10.1 指针与指针变量10.2 指针与数组10.3 指针与字符串10.4 指针与结构体10.5 指针与链表10.6 指针与函数10.7 指针作基类型10.8 程序设计举例10.1 指针与指针变量10.1.1 指针变量的定义1. 定义方法 形式: 类型标识符*变量标识符; 定义存放指定类型数据地址的指针变量。

例如: (1) int *p1,*p2,*p3; 定义指向整型数据的指针变量p1、p2、p3。

 (2) float *q1,*q2,*q3; 定义指向实型数据的指针变量q1、q2、q3。

 (3) char * r1,*r2,*r3; 定义指向字符型数据的指针变量r1、r2、r3。

(4) struct date {int year; int month; int day; } *t1,*t2,*t3; 定义指向struct date类型数据的指针变量t1、t2、t3。

说明: (1) 指针变量可与普通变量混合定义,指针变量的定义与普通变量的定义用变量名前加“*”区分。

例如: int i,*p;/*定义整型变量i,指针变量p*/ (2) 空指针“NULL”是一特殊的指针数据,表示空地址,相当于整型数据中的0,字符数据中的空格。

 (3) 指针变量只能用于存放指定类型数据的地址。

如以上定义的一些指针变量,p1、p2、p3只能存放整型数据的地址,q1、q2、q3只能存放实型数据的地址,r1、r2、r3只能存放字符型数据的地址,t1、t2、t3只能存放struct date型数据的地址。

(4) 指针变量不能直接赋以具体地址值,不能从键盘输入值。

指针变量通过间接赋以相关数据的地址,或调用存储空间分配函数得到值。

例如: int i,j,k; int*p1=&i,* p2=&j,* p3=&k;/* p1得到i的地址,p2得到j的地址,p3得到k的地址*/(5) 指针类型隐含在指针变量的定义中。

C语言程序设计(第3版)第10章补充习题及答案

C语言程序设计(第3版)第10章补充习题及答案

第10章补充习题及答案习题10.1 选择题(1)当已存在一个abc.txt文件时,执行函数fopen("abc.txt","r+")的功能是。

A.打开abc.txt文件,清除原有的内容B.打开abc.txt文件,只能写入新的内容C.打开abc.txt文件,只能读取原有内容D.打开abc.txt文件,可以读取和写入新的内容(2)若用fopen()函数打开一个已存在的文本文件,保留该文件原有内容,且可以读,可以写。

则文件打开模式是。

A."ab+" B."w+" C."a+" D."a"(3)以下不能将文件指针重新移到文件开头位置的函数是。

A.rewind(fp); B.fseek(fp,0,SEEK_SET);C.fseek(fp,-(long)ftell(fp),SEEK_CUR); D.fseek(fp,0,SEEK_END);(4)若用fopen()函数打开一个新二进制文件,该文件可以读也可以写,则文件的打开模式为 B 。

A."ab+" B."wb+" C."rb+" D."a+"(5)fread(buffer,64,2,fp)的功能是。

A.从fp所指的文件中读取64并存入buffer中B.从fp所指的文件中读取64和2并存入buffer中C.从fp所指的文件中读取64个字节的数据并存入buffer中D.从fp所指的文件中读取2个64字节的数据并存入buffer中(6)以下程序的功能是。

提示:PRN是打印设备。

#include <stdio.h>void main(){ FILE * fp;char chStr[]="HELLO";fp=fopen("PRN","w");fputs(chStr,fp);fclose(fp);}A.在屏幕显示HELLO B.把HELLO存入PRN文件中C.在打印机上打印出HELLO D.以上都不对10.2 填空题(1)使用fopen("abc","r+")打开文件时,若"abc"文件不存在,则返回。

《C语言程序设计教程》课件--第10章

《C语言程序设计教程》课件--第10章
向文件写数据时,也是先将 变量中数据送到缓冲区,待缓 冲区装满后,再一起存到磁盘 文件中。
8
程序区
数据区
输入 输出 文件
缓冲区
内存
磁盘文件 输出
输入 外存
图10.2 系统对缓冲文件的处理
2019/10/29
10.1 文件的概述
9
10.1.1 文件和文件指针
3. 缓冲文件和文件指针
文件类型指针
在缓冲文件系统中,对每个正在使用的文件
exit(0); }
2019/10/29
10.2 文本文件的读写
21
10.2.1 文件的字符输入输出函数
while ((c=getchar( ))!=EOF)
/*键盘文件结束标志:输入Ctrl+z,显示^Z后回车*/
putc(c, fp);
/* 将键盘输入的字符写到文件中 */
fclose(fp);
”w”:只写方式
为写(输出)文本文件打开文件。若文件不存在, 则建立一个新文件;若文件已存在,则清空文件。
”a”:追加方式
为写(输出)文本文件打开文件。若文件已存在, 则保持原来文件的内容,将新的数据增加到原来数据 的后面;若文件不存在,则返回NULL。
2019/10/29
10.1 文件的概述
14
因此对uunnss于iiggnn每eedd 个cha使r 用*ics中utrepm的;p; 磁//**盘CTue文rmrpeo件nrta必rayc须ftiilv先ee pi定onidni义tceart一o*r/*/ 个FILshEo类rt 型的文件t指oke针n;变量/* 并Use指d f向or此val变id量ity。checking */
常①字用符p的u的t调c先函用数后形与顺式f序p:u进tc行函,数的只功能能在相操同作。了在第sitd个io.h文

C语言程序设计第10章 编译预处理简明教程PPT课件

C语言程序设计第10章 编译预处理简明教程PPT课件

(2)定义一个宏名字之后,可以在其他宏定义中使用它。 如: #define ONE 1 #define TWO ONE+1 #define THREE ONE+TWO
计算机科学与技术学院—— C语言程序设计
10.2 #define
例10-1 宏定义及其使用 #define MESSAGE “You are right!\n”
计算机科学与技术学院—— C语言程序设计
第十章 编译预处理 内容提要
C预处理程序 #define
#include
条件编译指令
#undef
计算机科学与技术学院—— C语言程序设计
10.3 #include
10.3 #include
程序中的#include指令要求编译程序读入另一个源文件。被读入 文件的名字必须由双引号(”)或一对尖括号(<>)包围。如: #include”stdio.h” 或 #include<stdio.h> 都令编译程序读入并编译用于I/O函数处理的包含文件stdio.h。
计算机科学与技术学院—— C语言程序设计
10.3 #include
说明: (1)包含文件中还可以包含其它文件,称为嵌套包含(nested includes)。允许的最大嵌套深度随编译程序而变。 (2)用尖括号包围头文件时,搜索头文件时按编译程序的预先定 义进行,一般只搜索某些专门放置包含头文件的特殊目录。当头 文件用双引号包围时,搜索按编译程序实现时的规定进行,一般 指搜索当前目录,如未发现头文件,则再按尖括号包围时的办法 重新搜索。
10.2 #define
(4)#define指令还有一个重要功能:宏名字可以有变元。每当遇 到宏名字时,与之有关的变元都由程序中的实际变元替换。如上 例中的#define ABS(a) (a)<0?-(a):(a)。但要注意,#define ABS(a) (a)<0?-(a):(a)中变元a两边的括号是不能少的,否则, 会产生非预期结果。如: #define ABS(a) a<0?-a:a printf(”abs of (10-20):%d\n”,ABS(10-20)); ABS(10-20)替换为:10-20<0?-10-20:10-20,则输出结果为-30。

实用C语言程序的设计教程第10章

实用C语言程序的设计教程第10章

char *modename; modename=getmodename(2); printf ("%s", modename); 结果:640×480 VGA 本章随后几节使用其他绘图函数时,均假定在分辨率为640×480对应 的显示模式下进行。
10.1.3 退出图形方式 图形输出初始化也就是进入图形输出方式,那是由initgraph函数来完 成的。进入图形方式后,才能使用各种图形函数。如果要退出图形方式, 即恢复文本方式,就要使用另一个函数closegraph (),或称关闭图 形方式的函数。
10.2.6 获取像素和画像素的函数getpixel和putpixel
函数首部分别为:
unsigned getpixel(int x,int y)
void putpixel(int x,int y,int color)
其中(x,y)是屏幕坐标,color是颜色。函数getpixel的功能是 获取屏幕上(x,y)处的颜色;函数putpixel的功能是在屏 幕上(x,y)处画颜色为color的点。
其中,graphdriver代表适配器类型,通过参数lowmode和himode分别获得 显示模式的最低和最高值。例如对于VGA显卡,用以下语句可得到显示 模式的范围:
int lowmode,himode; getmoderange (9,lowmode,himode); printf ("%d,%d", &lowmode,&himode); 例如,若得到0,2,说明显示模式的范围为0,1,2。 10.1.2.2 设置显示模式的函数 函数原型: void setgraphmode (int mode); 其中,参数mode代表要设置的显示模式。例如对于VGA显卡,用以下函 数调用语句可将显示模式设置为0(对应的分辨率为640×200):

《C语言程序设计与数据结构》课件第10章

《C语言程序设计与数据结构》课件第10章

“r+”
打开一个已经存在的文本文件,可以读取数据,也可以写入数据
“w+”
Hale Waihona Puke 打开一个文本文件,可以读取数据,也可以写入数据。若文件不存在,则自动建立一个新文件接受写入的数据;若文件存在,则删除文件中原有内容,并接受写入的数据(覆盖)
“a+”
打开一个已经存在的文本文件,可以读取数据,也可以写入数据(追加在文件的尾部)
2
C语言程序设计与数据结构
rewind函数
rewind函数的功能是把文件内部的位置指针移到文件首。其调用形式为:
rewind(文件指针);
“文件指针”指向被移动的文件。
01
03
02
C语言程序设计与数据结构
fseek函数
fseek函数用来移动文件内部位置指针,其调用形式为:
fseek(文件指针,位移量,起始点);
在C语言中,对文件的这些操作都可以由库函数来完成,对用到的库函数的声明包含在文件stdio.h中,因此在编程中要操作文件时,要使用头文件包含命令#include “stdio.h”。
C语言程序设计与数据结构
10.2.1 文件的打开
所谓打开文件,实际上是获得文件的各种有关信息,并使文件指针指向该文件,以便进行下一步操作。C语言提供了函数fopen来打开文件。 其使用格式为: 文件指针名=fopen(文件名, 使用文件方式); 其中,“文件指针名”必须是已被说明为FILE 类型的指针变量;“文件名”是将被打开的文件的文件名,通常是字符串常量或字符串数组(注意路径的分隔符应使用“\\”);“使用文件方式”是指文件的类型和操作要求,是一个由一对双引号括起来的字符串,共有12种,具体的符号表示和含义见表10-1。

C程序设计课件第10章

C程序设计课件第10章
第一次读了第100个成分 然后再读第3个成分 然后再用一个新的数据修改第50 成分 将其写入第50个成分中 然后又读第200个成分...,等等。 这是允许的,并且是正确的。
普通文件和设备文件
普通文件是指驻留在磁盘或其它外部介质上的一 个有序数据集,可以是源程序文件、目标程序文 件、可执行程序文件;也可以是一组待输入处理 的原始数据,或者是一组输出的结果。
同时,将读写位置指针向前移动size* count个字节。
一般来讲,数组buf每个元素的尺寸为size ,每个字段正好对 应数组buf的一个元素;即读入count个字段送入数组buf的 count个元素中。
写数据块
函数原型:
int fwrite( void *buf, int size, int count, FILE *fp );
库函数本身并不属于语言,它是系统根据需要提供给 用户使用的函数。C 标准定义了常用的函数库和每个函 数库中常用的库函数。但是不同的编译系统提供的函数 库不同,不同编译系统在每个函数库中提供的库函数也 不同。为了提高程序的可移植性,用户应该只使用 C 标准定义的函数库和库函数。
对应每个函数库,有一个头文件,在头文件中包 含相应函数库中所有函数的函数原型。用户使用 库函数时,需要把相应的头文件用 #include 命 令括入到自己的程序文件中。
test.c 表示相对于节 E:\doc\programing的相对文件名
顺序文件和随机文件
顺序文件的特点:文件分成两种模式
读模式 写模式 在任意时刻,一个顺序文件只能处于两种模式之一。当
一个顺序文件处于读模式时,只能从该文件读数据。
反之,当一个顺序文件处于写模式时,只能向该文件写 数据。
从操作角度看,顺序文件只能顺序操作。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

fgetc(fp)
#define putchar( c ) fputc(c,stdout)
#define getchar( ) fgetc(stdin)
例 从键盘输入字符#,inc#逐liund个celu<dsetd<isot.dhi>o.h>
存到磁盘文件中m,ai#m直ni(na)到cinlu()de <stdio.h>
F功IL能E:*f按p; 格式对文件进行I/O操作 i{返f((p值fpu=t:sf(o"成pcea功nn('",t返toeps回te"nI,"/fiwOle"的")));=个=eN数xUit;出(L)L;错) }或文件尾,返回EOF
例 ffpscrianntf(fsptd,“i%n,"d,%%s6%.2fd”",i,st),&; a)/;/将/*ir和eat按d%frdo,%m6.k2fe格ab式o输ar出d到*/fp文件 ffspcrainnft(ff(pf,p“,%"%d,%s f%”,&d"i,,&s,ta));;/*/w/若r文ite件t中o有fil3e,4*.5/ ,则将3送入i, 4.5送入t
函数原型: {inptrif{nceltoofff(s(p"eFuC(IftLpacn)(E;cnho*,tffppo))p;en outfile.\n");
功能:判断文}e件xi是t(0否)p;u结tc束har(ch);
返值:文件结} 束,返ch回=g真et(ch非ar0()); ;文件未结束,返
二进制形式
二进制文件特点: 存储量小、速度快、便于存放中间结果
文件处理方法
缓冲文件系统:高级文件系统,系统自动为正 在使用的文件开辟内存缓冲区
非缓冲文件系统:低级文件系统,由用户在程 序中为每个文件设定缓冲区
程序 输入文件缓冲区
缓冲文件系统:
指令区
程序数据区
非缓冲文件系统:
用户a数据区
磁盘文件 磁盘
并显示
{ pri}ntfe(x}"iCt(a0n);not open infile.\n"); exi}ptr(0in);tf("Please input string:");
例 文件 f拷eo贝f
ห้องสมุดไป่ตู้
} wchh=ilgee(t(cchha=rf(g)e;tc(fp))!=EOF) if ((owuhtpi=ulet(fccohhpa!er=n('(c#oh'u));tfile, "w"))== NULL)
第十章 文件
10.1 C文件概述 文件:存储在外部介质上数据的集合,是操 作系统数据管理的单位
使用数据文件的目的 1、数据文件的改动不引起程序的改动——程 序与数据分离 2、不同程序可以访问同一数据文件中的数 据——数据共享 3、能长期保存程序运行的中间数据或结果数 据
文件分类
按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打 印机等)
例 例
cFF要hII例aLL打rEE功开F文*I的**能fL件iffl文ppEe:打;;n件a按开*m名fpe与指=; “测定c:试\方\fe式n使gy打用i\文\开b件k文c方\\t件式est.txt”
ffpp==返ffoofppp值ee=nnf:(o(fp“il正ce:n\(\常af“mean打aeg.,c”y开”ri\,”\“b,)”;k)c;为\\t指est向.da文t”,件”r结”);构体
的if指(fp针==;NU打L开L) 失败,为NULL
{ printf(“File open error!\n”);
exit(0);
}
文件关闭fclose 作用:使文件指针变量与文件“脱钩”,释放文件 结构体和文件指针
函数原型:int fclose(FILE *fp)
功能:关闭fp指向的文件
输入‘#“为止 { cFhm{{aILraFFciEhcII判nLLha(*,)r断EEiinnc**二f,hiff*l,pp*e进o;;[fu1il制t0e;]n文,oaum件tefi是=le“[否o1u0结t].;t束xt”;
scanciffh(((a"frp%wc=hhsf"io,l*p,eif(nei!lnfeie(nlfoeiaf)lm(;efnpea)=m)“oe,u"tw.tx"t)”)=; =NULL)
返值:正常,返回c;出错,为EOF
fgetc
函数原型:int fgetc(FILE *fp)
功能:从fp指向的文件中读取一字 节代码
返值:正常,返回读到的代码值;读 到文件尾或出错,为EOF
文件I/O与终端I/O
#define putc(ch,fp) fputc(ch,fp)
#define getc(fp)
回0
whil}e (!feof(in)) fpfcultocs(ef(gfept)c;(in), out);
fc}lose(in); fclose(out);
}
#inc格lud式e <化stId/ioO.h:f>printf与fscanf main() 函数原型:
in{tchfparrisn[8tf0(]F,cI[L80E]; *fp,const char *format[,argument,…]) intinftscaa,bn;f(FILE *fp,const char *format[,address,…])
为输入打开一个文本/二进制文件
“w/wb” (只写) 为输出打开或建立一个文本/二进制文件
“a/ab” (追加)
向文本/二进制文件尾追加数据
“r+/rb+” (读写) 为读/写打开一个文本/二进制文件
“w+/wb+”(读写) 为读/写建立一个文本/二进制文件
“a+/ab+”(读写) 为读/写打开或建立一个文本/二进制文件
按数据的组织形式: 文本文件: ASCII文件,每个字节存放一个 字符的ASCII码 二进制文件:数据按其在内存中的存储形式 原样存放
文本文件特点: 存储量大、速度慢、便于对字符操作
如 int型数10000
0010011100010000 内存存储形式
ASCII形式 0011000100110000001100000011000000110000 0010011100010000
返值:正常关闭为0;出文错件时打开,非时0返回的文件类型指针
缓冲文件系统:
不关闭文件可能会丢失数据
输入文件缓冲区
程序数据区 a
磁盘文件
fclose
输出文件缓冲区
10.4 文件的读写
字符I/O:fputc与fgetc
fputc 函数原型:int fputc(int c, FILE *fp) 功能:把一字节代码c写入fp指向的文 件中
fclose(fp);
}
例 f从clo键se盘(fp按);格式输入数据存到磁盘文件中去 if((fp=fopen("test","r"))==NULL)
{ puts("can't open file"); exit(); }
fscanf(fp,"%s%d",c,&b);/*read from file*/
fprintf(stdout,"%s %d",c,b);/*print to screen*/
缓冲区 输出文件缓冲区
10.2 文件类型指针
文件结构体FILE 缓冲文件系统为每个正使用的文件在内存开辟 文件信息区
文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中
typedef struct { int _fd; //文件号
int _cleft; //缓冲区中剩下的字符数 int _mode; //文件操作方式 char *_next; //文件当前读写位置 char *_buff; //文件缓冲区位置 }FILE;
scani{ff((("pfp%r{i=nsft"ofp,(co"=eucnftag(ffneiiltnlece)o(n;ftapom)p;ee,n”rfi"l)e)\=n="N);ULL)
例 读文本文件内容,if ((i{n =prfeoinxpitetfn((0"…()icn;a…fnil.ne.o, t"or"p)e)n==filNe\Un"L)L; )
10.3 文件的打开与关闭
C文件操作用库函数实现,包含在stdio.h
文件使用方式:打开文件-->文件读/写-->关 闭文件
系统自动打开和关闭三个标准文件:
标准输入------键盘
stdin
标准输出------显示器
stdout
标准出错输出-----显示器 stderr
打开文件fopen 函数原型: FILE *fopen(char *name,char *mode)
文件类型指针
指针变量说明: FILE *fp; 用法:
文件打开时,系统自动建立文件结 构体,并把指向它的指针返回来, 程序通过这个指针获得文件信息, 访问文件。
文件关闭后,它的文件结构体被释 放。
C程序
文件名
文件使用 方式
操作系统
文件类型指针
磁盘
10.3 文件的打开与关闭
文件使用方式
含义
“r/rb” (只读)
相关文档
最新文档