{企业组织设计}lesson20数据的组织结构二文件

上传人:精****库 文档编号:141220597 上传时间:2020-08-05 格式:PPTX 页数:45 大小:195.38KB
返回 下载 相关 举报
{企业组织设计}lesson20数据的组织结构二文件_第1页
第1页 / 共45页
{企业组织设计}lesson20数据的组织结构二文件_第2页
第2页 / 共45页
{企业组织设计}lesson20数据的组织结构二文件_第3页
第3页 / 共45页
{企业组织设计}lesson20数据的组织结构二文件_第4页
第4页 / 共45页
{企业组织设计}lesson20数据的组织结构二文件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《{企业组织设计}lesson20数据的组织结构二文件》由会员分享,可在线阅读,更多相关《{企业组织设计}lesson20数据的组织结构二文件(45页珍藏版)》请在金锄头文库上搜索。

1、Lesson 20 数据文件及其操作,1/40,输入/输出的概念及学习目标,1,学会读写数据文件,操作系统的标准输入/输出设备:键盘/显示器,如果需要改变输入/输出的流向,需要重定向,另一个输入/输出的对象就是磁盘数据文件,使用数据文件来建立程序中的数据或保存数据到文件中,是C程序设计的习惯用法。,2/40,文件:是指一组相关数据的有序集合。 这个数据集有一个名称,叫做文件名。 操作系统是以文件为单位对数据进行管理的。,例如: C:24000101program.c,其中k:24000101叫路径,program.c是文件名。当需要使用文件的时候,需要将文件调入内存中。,3/40,从文件编码和

2、数据的组织方式来看,数据文件可分为ASCII码文件和二进制码文件。,也叫文本文件,磁盘上,内存中,操作系统在内存中的缓冲区,4/40,ASCII数据文件:文件在磁盘中存放时每个字符占一个字节,每个字节存放相应字符的ASCII码值。 二进制数据文件:存储介质上保存的数据采用与内存数据一致的表示形式存储(为二进制形式)。,例: 在文件中存放整数2147483647,语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。一个输入输出流就是一个字节流或二进制流。,5/40,文件的位置指针,位置指针用来指示当前的读写位置。 一般情况下,在对字符文件进行顺序读写时,文件的位置指针

3、指向 文件开头,这时如果对文件进行读的操作,就读第一个字符,然后 文件的位置指针顺序向后移一个位置,在下一次执行读的操作时, 就将指针指向的第二个字符读入。依此类推,直到遇文件尾., 文件头 读写当前位置 文件尾,有时希望在一个文件的原有数据之后再添加新的数据,应该把文件位置指针移到文件尾,然后再接着写入新的数据,这就是文件的追加。,6/40,文件的基本操作 定义文件指针 定义格式为:FILE * 文件指针变量; 例如 FILE *fp; FILEf5; 文件的打开 文件指针 = fopen(文件名,操作模式) fp = fopen(c:file.dat, r); if (fp= NUUL)

4、printf(“nCannot open the file”); return 1; ,7/40,8/40,打开文件文件方式,9/40,文件的关闭 fclose(文件指针); 例如:fclose(fp); 文件的读写操作 字符读写函数 :fgetc( )和fputc( ) 字符串读写函数:fgets( )和fputs( ) 数据块读写函数:fread( )和fwrite( ) 格式化读写函数:fscanf( )和fprinf( ),返回值: 关闭成功返回值为;否则返回EOF(-1),10/40,字符读写操作 1、fgetc( )的调用格式: 字符型变量= fgetc( 文件指针 ); 例如:c

5、h = fgetc(fp); 语句功能是:从fp指向的文件中读取一个字符并将这个字符赋给char型变量ch 。遇结束,返回EOF。 2、fputc( )的调用格式: fputc(字符,文件指针); 例如: fputc(ch, fp); 语句功能是:将字符型变量ch的内容写入文件指针fp所指的文本文件中。写入成功,返回字符本身,反之EOF。,11/40,读文件基本过程,#include stdio.h int main() int i,x; FILE * fp ; fp=fopen(array.txt,r); if(fp=NULL) printf(文件不存在); exit(0); printf(

6、从文件中读取的数据:n); for(i=1;i10;i+) fscanf(fp,%d, ,1、定义FILE 指针,2、打开文件,3、确保文件有效,4、用函数读文件,5、关闭文件,写文件基本过程,#include stdio.h int main() int i,x; FILE * fp ; fp=fopen(array2.txt,“w); if(fp=NULL) printf(文件不存在); exit(0); printf(从文件中读取的数据:n); for(i=1;i10;i+) scanf(%d, ,1、定义FILE 指针,2、打开文件,3、确保文件有效,4、用函数往文件写数据,5、关闭文

7、件,a和w的区别,#include stdio.h int main() int i,x; FILE * fp ; fp=fopen(array.txt,“a); if(fp=NULL) printf(文件不存在); exit(0); printf(从文件中读取的数据:n); for(i=1;i10;i+) scanf(%d, ,打开文件方式,二进制文件和文本文件,#include stdio.h int main() int i,x; FILE * fp ; fp=fopen(array4.txt,wb); if(fp=NULL) printf(文件不存在); exit(0); printf

8、(将从键盘输入数据写入文件:n); scanf(%d, ,#include stdio.h int main() int i,x; FILE * fp ; fp=fopen(array5.txt,w); if(fp=NULL) printf(文件不存在); exit(0); printf(将从键盘输入数据写入文件:n); scanf(%d, ,二进制文件和文本文件,20_e.c,例1:读取一个给定的文本文件,并将文件的内容显示在屏幕上。,问题分析 需要读取文本文件,所以以“r”操作模式将文件打开。 文本文件的结束标志为EOF(-1)。当文件读写指针指向EOF时,表示文件已经读到了尾部。因此,在

9、读文件时,需要设计一个while循环语句,它的结束条件是读取的字符等于EOF。 需要读取的文件名称通过命令行参数带入,这样可以扩展程序的使用范围,增加程序运行的灵活性。,17/40,算法描述,18/40,#include int main( ) FILE *fp; int ch; char name100; printf(“请输入文件名:n”) ; gets(name); fp=fopen(name,r); if(fp= NULL ) /* 打开文件 */ printf(Cannot open file !); return 1; ch = fgetc(fp); /* 以字符方式读取文件 */

10、 while (ch!=EOF) putchar(ch); ch = fgetc(fp); fclose(fp); /* 关闭文件 */ return 0; ,19/40,字符串读写操作 1、fgets( )的调用格式: fgets(字符数组名,n,文件指针); 例如:fgets(str, n, fp); 语句功能是:从fp所指的文件中读出n-1个字符并存入字符数组str中。 2、fputs ( )的调用格式: fputs(字符串,文件指针) ; 例如: fputs(“C program”, fp); 语句功能是:将字符串“C program”写入fp所指的文件中。,20/40,例2:编程从键

11、盘输入一个源文件的文件名和一个目的文件的文件名,将源文件的内容拷贝到目的文件中。,21/40,#include int main() FILE *fp1,*fp2; char str20,srcName20,desName20; gets(srcName);gets(desName); if(fp1=fopen(srcName,r)=NULL) printf(file1 openned error.n); exit(0); if(fp2=fopen(desName,w)=NULL) printf(file2 created error.n); exit(0); while(fgets(str,

12、20,fp1)!= NULL) fputs(str,fp2); fclose(fp1); fclose(fp2); return 0; ,22/40,#include #include int readFile( char lines 80); void writeFile(char lines 80, int n ); main( ) int choice, num; char lines10080; do /*显示菜单*/ printf(n = MENU =n); printf(n read file.1); printf(n write file.2); printf(n exit.3)

13、; printf(n select:); scanf(“%d”, ,例3:P214例6-13,23/40,int readFile(char lines 80) * 读文件*/ int i; FILE *fp; char filename30; printf(“nEnter file name:”); /* 输入要进行写操作的文件名*/ gets(filename); if(fp=fopen(filename,“r”)=NULL) /* 打开文件*/ printf(Cannot open file!); return 0; for (i=0; !feof(fp); i+) /* 读取并显示文件

14、*/ fgets( ,24/40,void writeFile(char lines 80, int n) /* 写文件 */ FILE *fp; char filename30; printf(“nEnter file name:”); /* 输入要进行写操作的文件名*/ gets(filename); if(fp=fopen(filename, “w”) = NULL) /* 打开文件*/ printf(Cannot open file!); return; while( n!=0 ) fputs( /* 关闭文件 */ ,25/40,数据块读写操作 1、 fread( )的调用格式: f

15、read(buffer, size, count, fp); 例如:fread(buffer, sizeof(int), 5, fp); ; 语句功能是:从fp所指的文件中读取5块数据并放在buffer中,每块数据的大小为int类型占用的字节数量。 2、 fwrite ( )的调用格式: fwrite(buffer, size, count, fp); 例如: fwrite(buffer, sizeof(float), 5, fp) ; 语句功能是:将buffer中存放的数据写入fp所指的文件中,共写入5块数据,每块数据的大小为float类型占用的字节数量。,输入输出的内容都为二进制形式,26/40,例4:从键盘输入学生基本信息,写入二进制文件;再从该文件中读取学生基本信息,并显示输出。,问题分析 假设学生基本信息只包含学号、姓名、所属院系和专业几个数据项,为此,需要定义一个结构类型。输入学生信息的时候,将所有数据项存放在一个结构型变量中,并以二进制的形式写入文件;在读取文件的时候,每次读取一个结构类型变量的字节数目,这样可以很轻松地实现将结构型数据存储到磁盘文件中的操作。,27/40,#include #define NUM 30 typedef struct info /* 表示学生基本

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号