c语言程序设计教程第10章文件
C语言程序设计_谭浩强_第二版_CH10
}
第十章 指针 10.3 数组的指针和指向数组的指针变量 10.3.2 通过指针引用数组元素 例10.5输出数组中的全部元素。 ②通过数组名计算数组中元素的地址,找出元素的值。
main() {
int a[10],i; for(i=0;i<10;i++){scanf(“%d”,&a[i]);} print(“\n”); for(i=0;i<10;i++){printf(“%d”,*(a+i));} print(“\n”);
}
运行结果为: 100,10 100,10
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.1 通过指针变量访问整型变量
pointer_1 &a
a 100 *pointer_1
pointer_2 &b
b 10 *pointer_2
第十章 指针 10.2 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 5 *pointer_1
pointer_2 &b
b 9 *pointer_2
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
b 5 *pointer_2
&b
第十章 指针 10.2 变量的指针和指向变量的指针变量
10.2.1指针变量的引用 例10.3 通过指针变量访问整型变量
pointer_1 &a
a 9 *pointer_1
《C语言程序设计教程》PPT课件
③ 标准错误输出文件,文件指针为stderr,系统指 定为显示器,输出错误信息。
10.1 文件的概述
11
10.1.2 文件的打开与关闭
操作文件的一般步骤
打开文件 读写文件 关闭文件 打开量文的件函C:语数建配言,立一的用用个输于户文入完程件输成序缓出对与冲函数文区数据件。库文的中件联提的系供建,了立为大、文件分 读写数文据件的:读是写指、对数文据件的的追读加、等写操、作追。加和定位操作。 关闭文件在:程切序断中文调件用与这程些序函的数联时系,,必释须放先文用件缓冲
}
FFIILLE;E *文件指针变量/名* ;This is the FILE object */
10.1 文件的概述
10
10.1.1 文件和文件指针
4. 标准文件
标准文件是外部设备中的三个特殊的设备文件。它们 的文件指针是系统定义的,并由系统自动打开和关闭。这 三个标准文件分别是:
① 标准输入文件,文件指针为stdin,系统指定为 键盘。
include命区令。包含stdio.h文件。
10.1 文件的概述
12
10.1.2 文件的打开与关闭
1. 文件打开函数fopen( )
常用的调用形式: FILE *fp; fp = fopen(文件名, 文件使用方式); 文件名:需要打开的文件名称(字符串)。 文件使用方式:是具有特定含义的符号。
缓冲区cha地r 址和大小f等d; 。 /* File descriptor
*/
FILE在类usnhCso型语irgt是n言ed系中ch统a,r定无hb义os论li的dz;e对;,磁包//**盘含UBnu文g在fefte件scrtcs还dhiazi是reo.i设fh头n备o 文b文uf件*f件/er中*/
c程序设计教程与实验课后答案
c程序设计教程与实验课后答案【篇一:c程序设计教程与实验第10章习题参考答案】题1.二进制文本2.rewind()3.字节流式4.”abc.dat” “rb”5.06.将文件位置指针从文本末尾处向文件头的方向移动10个字节7.将文件file1.txt的内容输出到屏幕8.将f1的字符保存到f2中9.rfetc(fp)num++10.fopen(“file.dat”,”wb”)dt,1,9,fp三、程序分析题1. 242.复制f1到f23.1.14.1177995. 65a 66b 67c 68d 69e 70f 71g 72h 75k 76l 77m 78n 79o 80p 81q 82r 85u 86v 87w 88x 89y 90z四、编程题1.#includestdio.h#includestdlib.hint main(){char file[10],file1[10],ch;file *in,*out;scanf(%s,file);scanf(%s,file1);if((in=fopen(file,r))==null){printf(cant open file\n);exit(0);}if((out=fopen(file1,w))==null) 73i 74j 83s 84t {printf(cant open file1\n);exit(0);}while(!feof(in)){ch=fgetc(in);fputc(ch,out);putchar(ch);}fclose(in);fclose(out);return 0;}2.#include stdio.h#includestring.h#include errno.hint main(void){file *fp;char ch;if (null == (fp = fopen(g3, r))){printf(fopen g3 error: %s\n, strerror(errno)); return 0;}while ((ch = fgetc(fp))!=eof){printf(%c, ch); }fclose(fp);printf(\n);return 0;}3.#includestdio.hvoid main(){file *fp; /*定义一个文件指针*/int i;double a[10];if((fp=fopen(data.txt,wb+))==null){printf(file can not open,press any key to exit!\n); getch(); /*从键盘上任意输入一字符,结束程序*/exit(1);}for(i=0;i10;i++)scanf(%lf,a[i]);for(i=0;i10;i++)fwrite(a+i,sizeof(double),1,fp);printf(\n);rewind(fp);fread(a,sizeof(double),10,fp);for(i=0;i10;i++)printf(%f\n,a[i]);printf(\n);fclose(fp);}4.#includestdio.hvoid main(){file *fp;int a[80],i,j;int a,b,c;a=b=c=0;if(fp=fopen(g4.dat,r))==null)printf(读取失败\n);for(i=0;i80;i++){fscanf(fp,%d,a[i]);if(fp==eof)break;}for(j=0;j=i;j++){if(a[i]0) a++;if(a[i]0) b++;if(a[i]==0) c++;}printf(正=%d,负=%d,零=%d\n,a,b,c);5.#includestdio.hstruct student{char num[10];char name[8];int score[2];float ave;} stu[3];void main(){int i,j,sum;file *fp;for(i=0;i3;i++){printf(\ninput score of student %d:\n,i+1);printf(no.:);scanf(%s,stu[i].num);printf(name:);scanf(%s,stu[i].name);sum=0;for(j=0;j2;j++){printf(score %d:,j+1);scanf(%d,stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/2.0;}fp=fopen(stud,w);for(i=0;i3;i++)if(fwrite(stu[i],sizeof(struct student),1,fp)!=1) printf(file write error\n);fclose(fp);fp=fopen(stud,r);for(i=0;i3;i++){fread(stu[i],sizeof(struct student),1,fp);printf(\n%s,%s,%d,%d,%d,%6.2f\n,stu[i].num,stu[i].name,stu[i]. score[0], stu[i].score[1],stu[i].score[2],stu[i].ave);}}【篇二:c语言程序设计实训教程习题和实验解答】ss=txt>2.1 c语言概述【习题解答】1结构化程序有三大基本结构:顺序、分支和循环.2..算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。
C语言程序设计教程第10章_北京邮电大学出版社
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语言有一个概括的了解, 能够编写包含键盘输入、计算和 显示输出等操作的简单C程序。
4
主要内容
• C语言的产生与特点 • 简单C程序的组成 • C语言应用程序开发的基本步骤
5
1.1 C语言的产生及特点
C语言是为了编写系统程序而在1968年开始 研发的计算机高级语言
C语言表达能力强,使用灵活,程序结构清 晰,紧凑,可移植性好
指针 类型
17
基本数据类型说明符
整型:int long
字符型:char 实型:float
double long double
18
2.2 常 量
常量∶在程序运行过程中,其值不能被改 变的量。
一. 不同数制整型常量的表示
例如: 12 :十进制数 12
012 :八进制数 12(等于十进 制数10,用前导符0表示八进制数常量)
计算x+y+z,并将结 8果赋给变量sum
显示变量 sum的值
主函数 main()
一般C程序的组成
【例1-2】采用模块结构,改写例1-1的程序。 add(int x,int y,int z )
{ return(x+y+z);
}
函数add()
调用函数 add()
main() { int x,y,z; printf("Please Input Three Integers:\n "); scanf("%d,%d,%d ",&x,&y,&z);
4. 用‘\’ ’表示字符’ ,‘\”’表示字符”, ‘\\ ’表示字符\ 。
5. 用双引号括起来的字符序列表示字符串常量,其 中最后一个字符是字符串结束符‘\0’,不显式 地表示出来。如:“English” 。
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.关闭文件。
kj第10章 文件编程技巧分析
第10章
文件知识编程技巧分析
第‹#›页
几种使用文件的方式如下: r:以只读方式打开一个文本文件。文件必须存在,否则打 开失败。打开后,文件内部的位置指针指向文件首部的第一个字 符。 w:以只写方式打开一个文本文件。若文件不存在,则建立 该文件。若文件已存在,则删除原文件内容,写入新内容。 a:以追加方式打开一个文本文件。只能向文件尾追加数据。 文件必须存在,否则打开失败。打开后,文件内部的位置指针指 向文件尾。 r+:以读/写方式打开一个文本文件。文件必须存在。打开后, 文件内部的位置指针指向文件首部的第一个字符。打开后,可以 读取文本内容,也可以写入文本内容,也可以既读又写。 w+:以读/写方式打开或新建立一个文本文件。若文件已存 在,则新的写操作将覆盖原来的数据。若文件不存在,则建立一 个新文件。还可以在不关闭文件的情况下,再读取文件内容。 a+:以读和追加的方式打开一个文本文件。允许读或追加。 文件必须存在,否则打开失败。打开后,文件内部的位置指针指 向文件尾。可在文件尾追加数据,也可将位置指针移到某个位置, 读取文件内容。
第10章 文件知识编程技巧分析 第‹#›页
10.1 文件知识简要介绍
3 、检测文件位置指针是否到达文件尾 可以使用feof函数检测文件位置指针是否到达文件尾,使 用格式如下: feof(文件类型指针); 若到达文件尾,则feof函数返回一个非0值(真),否则返回 0(假)。 当我们对文件进行操作时,例如顺序读取文件的所有数据, 可以使用该函数来判断文件内容是否结束,若文件内容没有结 束,则继续读取数据,否则结束读取操作。 4、 检测文件位置指针的当前位置 可以使用ftell函数检测文件的位置指针的当前位置,使用格 式如下: 长整型变量=ftell(文件类型指针); 若调用ftell函数成功,ftell函数的返回值是从文件首到位置 指针所指当前位置的总的字节数(长整型),否则返回值是-1L。
高树芳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语言“字符串”
程序运行过程: How do you do?↙ How s=do,s1=you
□do? 注:□代表空格
C语言程序设计教程
第10章 字符串
12
10.1.4 字符串处理函数 C语言库函数中除了前面用到的库函数 gets()与puts()之外,还提供了一些常用的库 函数,其函数在string.h中 1.字符串拷贝函数:strcpy() 调用格式:strcpy(d_str,s_str); 功 能:将以s_str为起始地址的字符串或字 符串常量(连同‘\0’)复制到以d_str为起始地 址的、连续的内存中。 说 明:d_str在内存中所占的字节数应不 小于s_str在内存中所占的字节数。
第10章 字符串
1
第十章 字符串
10.1 字符数组与字符串 10.2 指针与字符串
2013/7/25
C语言程序设计教程
第10章 字符串
2
10.1 字符数组与字符串
10.1.1 字符数组的定义与初始化
1. 字符数组的定义 字符数组:其元素类型为字符类型的数组,其定义与前面介 绍的数组定义相同。 例如: char str[40]; 定义一个有40个元素的字符数组,每个元素相当于一个字 符变量。 char ch[5][30];
15
3.字符串比较函数strcmp()
调用格式:strcmp(str1,str2); 功能:若str1=str2,则函数返回值为0; 若str1>str2,则函数返回值为正整数; 若str1<str2,则函数值返回为负整数。 比较规则: ● 两个字符串自左至右逐个字符比较,直到出现不同字符 或遇到‘\0’为止。 ● 如字符全部相同且字符串的长度相等,则两个字符串相 等; 若出现不同字符,则遇到的第一对不同字符的ASCⅡ大者 为大,返回值为两者ASCII码值之差。 比较两字符串是否相等一般用以下形式: if (strcmp(str1,str2)==0){…}; 而 if(str1==str2){…};是错误的。
C语言第10章对文件的输入输出 ppt课件
PPT课件
11
10.1.1 什么是文件
➢从C程序的观点来看,无论程序一次读写 一个字符,或一行文字,或一个指定的数 据区,作为输入输出的各种文件或设备都 是统一以逻辑数据流的方式出现的。C语 言把文件看作是一个字符(或字节)的序 列。一个输入输出流就是一个字符流或字 节(内容为二进制数据)流。
PPT课件
20
10.1.3 文件的分类
ASCII形式
00110001 00110000 00110000 00110000 00110000
(1) (0) (0) (0) (0)
二进制形式
00000000 00000000 00100111 00010000
(10000)
PPT课件
21
10.1.4 文件缓冲区
的temp子目录下面
PPT课件
15
10.1.2 文件名
➢文件路径表示文文件件在名外部存储设备中的位 置。如:
D: \CC\temp\file1.dat 表示file1.dat文件存放在D盘中的CC目录下
的temp子目录下面
PPT课件
16
10.1.2 文件名
➢文件路径表示文命 识件名 符在规 的外则 命部遵 名存循 规储标 则设备中的位 置。如:
➢“文件”指存储在外部介质上数据的集合
一批数据是以文件的形式存放在外部介质上的 操作系统是以文件为单位对数据进行管理 想找存放在外部介质上的数据,先按文件名找
到所指定的文件,然后再从该文件读数据 要向外部介质上存储数据也必须先建立一个文
件(以文件名作为标志),才能向它输出数据
C语言程序设计教程(第5版)王秀鸾第10章函数参数传递进阶
10.6 main( )函数的形参
主函数的原形如下: main(int argc,char *argv[]) { … }
其中,argc和argv就是main()函数的形参。argc 是整形变量,argv[]是一个字符型指针数组。
main( )函数是由操作系统调用的,它的参数由操 作系统传递,所以运行带形参的主函数时,必须在 操作系统命令状态下,输入命令行:
第10章 函数参数传递进阶
10.1 指针变量作为函数参数
• 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指
针类型数据。
【例10.1】交换两个指针变量所指向的变量的值
#include "stdio.h" void test(int *p1,int *p2) /* 形参为指针变量 */ { int p;
} int add(int a,int b) { return(a+b); }
3.指向函数指针变量作函数参数
指向函数的指针变量也可以作为函数的参数;即 将函数的入口地址传递给函数,也就是将函数名传 给形参,从而实现利用相同的函数调用语句调用不 同函数的目的。
【例】 用函数指针变量实现四则运算。
#include "stdio.h" double add(double x,double y) { return(x+y);} double sub(double x,double y) { return(x-y);} double mult(double x,double y) { return(x*y);} double divi(double x,double y) { return(x/y);} double result(double x,double y,doubl
C语言程序设计(第3版)何钦铭 颜 晖 第10章 函数与程序结构
第10章函数与程序结构【练习10-1】使用递归函数计算1到n之和:若要用递归函数计算sum=1+2+3+…+n(n为正整数),请写出该递归函数的递归式子及递归出口。
试编写相应程序。
解答:递归式子: sum(i) = sum(i-1) + i;递归出口: sum(i) = 0;【练习10-2】请完成下列宏定义:① MIN(a,b) 求 a,b 的最小值② ISLOWER(c) 判断 c 是否为小写字母③ ISLEAP(y) 判断 y 是否为闰年④ CIRFER(r) 计算半径为 r 的圆周长解答:① MIN(a, b):求a,b的最小值。
#define MIN(a,b) (a<b)? a: b② ISLOWER(c):判断c是否为小写字母。
#define ISLOWER(c) (c>='a'&&c<='z')③ ISLEAP(y):判断y是否为闰年。
#define ISLEAP(y) (y%4==0&&y%100!=0)||y%400==0)④ CIRFER(r):计算半径为r的圆周长。
#define PI 3.14159#define CIRFER(r) 2*PI*(r)【练习10-3】分别用函数和带参宏实现从 3 个数中找出最大数,请比较两者在形式上和使用上的区别。
解答:(1)函数实现int max(int x,int y,int z){int t;if(x>=y)if(x>=z) t=x;else t=z;elseif(y>=z) t=y;else t=z;return t;}(2)宏实现#define MAX( x, y, z ) x>=y? (x>=z? x:z) : (y>=z? y:z)两者在定义形式上完全不同。
使用上函数是在执行时,从主调函数转到函数 max(),然后再返回到主调函数,函数体始终存在;而宏是在编译预处理时,用条件表达式去替换MAX(int x, int y, int z ),等程序执行时,执行的是条件表达式,而不再存在 MAX(int x, int y,int z )的式子。
919140-C语言程序设计教程——面向计算思维和问题求解-第10章-新
程序设计:
#include<stdio.h> #include<stdlib.h>
void main( )
{
FILE *fp;
char str[30]; /* 用于存储一行古诗 */
fp =fopen("d:/古诗.txt", "r");
if(fp==NULL)
“ab+”(读写)
以读写方式打开二进制文件。可读取数据和向文件尾部添加数据,原 文件内容保留。
例如,以“只读”方式打开文件pressure.dat,并用文件来自 针fp指向该文件的语句如下:
FILE *fp; fp=fopen(“pressure.dat”, “r”);
注意:在打开文件时应该判断文件打开是否成功。 例如:
二进制文件:二进制文件是指把数据按其在内存中的 存储形式原样存储到磁盘上所形成的二进制数据文件。 由于编码不同,二进制文件用文本处理软件打开会出 现乱码。
文件指针:指向文件的指针变量。用于建立缓冲文件 系统与特定文件的关联。 定义一个文件指针的格式:FILE *指针名;
其中,FILE是在stdio.h中定义的结构体类型,封 装了与文件有关的信息。 在定义文件指针时,最好将文件指针指向空。 如:FILE *fp=NULL;
语言程序设计教程
面向计算思维和问题求解
第10章 数据的文件管理
文件概述 文件的打开与关闭 文本文件的读写 二进制文件的读写 文件的定位 文件的更新
10.1.1 问题描述
信用卡是当今发展最快的一种集金融业务和电脑技术 于一体的高科技产物。具有支付和信贷等功能。模拟信用 卡帐户管理设计一个简易帐户信息管理系统,主要管理帐 号、姓名、余额三项内容。具体操作有:添加帐户、删除 帐户、更新帐户信息以及列出当前全部帐户信息等。
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"文件不存在,则返回。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出文件缓冲区 缓冲区
广西工学院
10.1.2 文件类型指针
文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信 息区 文件信息用系统定义的名为FILE的结构体描述 FILE定义在stdio.h中
typedef struct { int _fd; int _cleft; int _mode; char *_next; char *_buff; }FILE;
//文件号 //缓冲区中剩下的字符数 //文件操作方式 //文件当前读写位置 //文件缓冲区位置
广西工学院
文件类型指针
有了结构体FILE类型之后,可以用它来定义若干个FILE类型的变 量,以便存放若干个文件的信息。 例如,可以定义以下FILE类型的数组.FILE f[5];定义了一个结构 体数组f,它有5个元素,可以用来存放5个文件的信息. 可以定义文件型指针变量.
例2 FILE *fp; char *filename=“c:\\fengyi\\bkc\\test.dat” fp= fopen(filename,”r”);
例3 文件打开与测试 FILE *fp; fp=fopen(“aa.c”,“w”); if(fp==NULL) { printf(“File open error!\n”); exit(0); }
指针变量定义: FILE *fp; 说明:
fp是一个指向FILE类型结构体的指针变量。可以使fp指向某 一个文件的结构体变量,从而通过该结构体变量中的文件信 息能够访问该文件。也就是说,通过文件指针变量能够找到 与它相关的文件。如果有n个文件,一般应设n个指针变量(指 向FILE类型结构体的指针变量),使它们分别指向n个文件(确 切地说指向存放该文件信息的结构体变量),以实现对文件的 访问。
广西工学院
10.2.1 文件打开(fopen函数)
C文件操作用库函数实现,包含在stdio.h 文件使用方式:打开文件-->文件读/写-->关闭文件 系统自动打开和关闭三个标准文件:
标准输入------键盘 标准输出------显示器 标准出错输出-----显示器 stdin stdout stderr
使用数据文件的目的 文件分类
1、数据文件的改动不引起程序的改动——程序与数据分离 按文件的逻辑结构: 2 、不同程序可以访问同一数据文件中的数据 ——数据共享 3、能长期保存程序运行的中间数据或结果数据 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成
广西工学院
10.2.2
文件关闭fclose
作用:使文件指针变量与文件“脱钩”,释放文件结构 体和文件指针 函数原型:int fclose(FILE *fp)
功能:关闭fp指向的文件 返值:正常关闭为 0;出错时,非0 文件打开时返回的文件类型指针
缓冲文件系统:
不关闭文件可能会丢失数据
磁盘文件
广西工学院
文件类型指针
用法:
文件打开时,系统自动建立文件结构体,并把指向它的指针 返回来,程序通过这个指针获得文件信息,访问文件 文件关闭后,它的文件结构体被释放 文件名 C程序 文件使用 方式 文件类型指针 操作系统
磁盘
广西工学院
§ 10.2 文件的打开与关闭
当需要对一个磁盘文件进行读写之前, 须首先“打开”文件,文件只有被打开之 后,才能对它进行读写操作。在文件使用fopen
函数原型: FILE *fopen(char *name,char *mode) 要打开的文件名 功能:按指定方式打开文件 返值:正常打开,为指向文件结构体的指针;打 开失败,为NULL
广西工学院
文件使用方式 “r/rb” (只读) “w/wb” (只写) “a/ab” (追加) “r+/rb+” (读写) “w+/wb+” (读写) “a+/ab+” (读写)
主讲 蔡启先
广西工学院
第十章 文件
10.1 10.2 10.3 10.4 10.5 10.6 文件概述 文件的打开与关闭 文件的读写操作 文件的定位 出错检测 综合示例
广西工学院
§ 10.1 文件概述 10.1.1 C语言操作文件
文件:存储在外部介质上数据的集合,是操作系统对数据 进行存储和管理的一种形式。
按存储介质:
普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等)
按数据的组织形式:
文本文件: ASCII文件,每个字节存放一个字符的ASCII码 二进制文件:数据按其在内存中的存储形式原样存放
广西工学院
文本文件特点: 存储量大、速度慢、便于对字符操作
输入文件缓冲区 程序数据区 a
输出文件缓冲区
广西工学院
fclose
§ 10.3 文件的读写操作
文件一经打开,即可对其进行读写操作。 C语言通常以一批文件操作函数实现对文件 的读写操作,这些函数被定义在 stdio.h 头文 件中,所以使用这些函数必须首先包含( # include ) stdio.h 头文件。下面就一些最常用 的文件操作函数及其调用方法予以讨论。
含义 为输入打开一个文本/二进制文件 为输出打开或建立一个文本/二进制文件 向文本/二进制文件尾追加数据 为读/写打开一个文本/二进制文件 为读/写建立一个文本/二进制文件 为读/写打开或建立一个文本/二进制文件
广西工学院
例1 FILE *fp; fp= fopen (“c:\\fengyi\\bkc\\test.dat”,”r”);
如 int型数10000
ASCII形式
0011000100110000001100000011000000110000
0010011100010000 0010011100010000
内存存储形式
二进制形式
二进制文件特点: 存储量小、速度快、便于存放中间结果
广西工学院
文件处理方法
缓冲文件系统:高级文件系统,系统自动为正在使用 的文件开辟内存缓冲区 非缓冲文件系统:低级文件系统,由用户在程序中为 每个文件设定缓冲区