Presentation is loading. Please wait.

Presentation is loading. Please wait.

C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院.

Similar presentations


Presentation on theme: "C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院."— Presentation transcript:

1 C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院

2 任务 A1001. 键盘输入字符串,保存在文件中,以#结束 A1002. 读取文件,在屏幕上显示内容
小 结 习 题

3 文件举例1 A1001: 键盘输入字符串,保存在文件中,以#结束 void main() { FILE *fp;
char ch,filename[10]; printf("input filename:"); gets(filename); fp=fopen(filename,"w"); if (fp==NULL) { printf("cannot open file\n"); exit(0);} printf("input string:"); ch=getchar(); while(ch!='#') { fputc(ch,fp); } fclose(fp); 打开文件 键盘输入并保存在文件中 关闭文件

4 打开文件 A1001. 键盘输入字符串,保存在文件中,以#结束 void main() { FILE *fp;
char ch,filename[10]; printf("input filename:"); gets(filename); fp=fopen(filename,"w"); if (fp==NULL) { printf("cannot open file\n"); exit(0); /*结束程序*/ } 文件类指针变量:用FILE定义 例:FILE *fp1,*fp2; 是一个指向结构体的指针变量,描述文件的有关信息。 建立/打开文件 fopen(文件名, 打开方式) 说明:操作成功返回一个指向文件的指针,否则返回NULL 例:FILE *fp; fp=fopen(“text.txt”,”rt”); 以只读方式打开 未成功打开文件,结束程序

5 写入文件、关闭文件 A1001. 键盘输入字符串,保存在文件中,以#结束 void main() { …..
{ ….. printf("input string:"); ch=getchar(); while(ch!='#') { fputc(ch,fp); } fclose(fp); 向文件写入单个字符 int fputc(char ch, FILE *fp) 将字符ch写入文件指针fp所指向的文件中。 关闭文件 fclose(文件指针变量) (1) 将系统读写缓冲区中的数据写入文件,保证数据不丢失 (2) 将文件指针与文件切断联系 #会写入文件吗?

6 文件举例2 A1002. 读取文件,在屏幕上显示内容 void main() { FILE *fp;
char ch,filename[10]; printf("filename:"); gets(filename); fp=fopen(filename,"r"); if (fp==NULL) { printf("cannot open file\n"); exit(0);} ch=fgetc(fp); while(ch!=EOF) { printf("%c",ch); ch=fgetc(fp); } fclose(fp); } 打开文件 读取文件内容并显示 关闭文件

7 读取文件 A1002. 读取文件,在屏幕上显示内容 void main() { ….. ch=fgetc(fp); 从文件中读取单个字符
{ ….. ch=fgetc(fp); while(ch!=EOF) { printf("%c",ch); } 从文件中读取单个字符 int fgetc(FILE *fp) 从fp所指向的文件中读出单个字符,操作成功返回读出的字符本身,否则返回0 例:字符变量=fgetc(fp): EOF 文件读取结束标志

8 文件举例3 练习: 读取文本文件,统计字母a出现的频率 打开文件 ch=fgetc(fp); while(ch!=EOF)
void main() { FILE *fp; char ch,filename[10]; printf("filename:"); gets(filename); fp=fopen(filename,"r"); if (fp==NULL) { printf("cannot open file\n"); exit(0);} ch=fgetc(fp); while(ch!=EOF) { printf("%c",ch); } fclose(fp); 打开文件 读取文件内容并显示 关闭文件 if ((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) { num++; switch(ch){ case 'a': case 'A': a_count++; }; } f=(float)a_count/num;

9 文件分类 文本方式 二进制方式 按文件中数据的组织形式分: 1)文本文件:每个字符占一个字节(ASCII码)可读性好。
2)二进制文件:以数据的二进制表示形式直接存储。二进制文件占用存储空间较文本文件小,且存取速度快,通常用于数据存储。 例:数据4567 文本方式 二进制方式

10 文件举例4 A1003.整形数组存二进制文件 保存在文件中 #define N 5 void main() { FILE *fp;
int a[N]={1,2,3,4,5}; fp=fopen("data","wb"); if (fp==NULL) { printf("cannot open file\n"); exit(0);} fwrite(a,sizeof(int),N,fp); fclose(fp); } 以块方式写数据 fwrite(buf, size, n, fp) buf:输出数据的首地址 size,读写的字节数 n,读写n个size字节 fp,写入的文件指针 将地址为buf中的n*size字节中的数据写入文件指针变量fp所指向的文件中。

11 文件举例5 A1004 读取文件中的数组数据,对数组求和 #define N 5 void main() { FILE *fp;
int b[N],i,sum=0; fp=fopen("data","rb+"); if (fp==NULL) { printf("cannot open file\n"); exit(0);} fread(b,sizeof(int),N,fp); fclose(fp); for(i=0;i<N;i++) sum+=b[i]; printf("%4d",sum); } 以块方式读数据 fread(buf, size, n, fp) buf:输出数据的首地址 size,读写的字节数 n,读写n个size字节 fp,写入的文件指针 将fp指向的文件中n*size字节中的数据写入地址为buf的内存中

12 小结 文本文件 二进制文件 定义文件指针 打开文件 读取文件 写文件 关闭文件 FILE *fp
文本文件 二进制文件 定义文件指针 打开文件 读取文件 写文件 关闭文件 FILE *fp fp=fopen(filename,"w") ch=fgetc(fp); fputc(ch,fp); fclose(fp); fread(b,sizeof(int),N,fp) fwrite(a,sizeof(int),N,fp)

13 习题 B1001 统计一个文本本件中单词个数(测试文件file.txt)


Download ppt "C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院."

Similar presentations


Ads by Google