版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章数组
11.1文件的概念11.2文件的打开与关闭11.3文件的字符输入与输出11.4文件的字符串输入与输出11.5文件的格式化输入与输出第十一章文件关键字文件文件指针读写
在前面章节中我们学过一些函数如:printf()、scanf()getchar()putchar()函数,它们是通过输入输出设备在程序中进行数据的输入和输出。但是利用它们,数据从键盘输入到内存,只能存放在变量等的内存单元中,只能在显示器上显示。一旦退出系统或关机,就将不存在。为了使数据能长期保存,我们就必须把它保存在磁盘上,这就需要文件。C语言能够处理什么样的文件?对于磁盘上的文件如何处理?本章将着重讲述文件的概念、文件的打开和关闭,有关文件的常用的读写函数等。11.1文件的概念一、文件的分类1、从用户观点:特殊文件(标准输入输出文件或标准设备文件)。普通文件(磁盘文件)。2、从操作系统的角度看,每一个与主机相连的输入输出设备看作是一个文件。例:输入文件:终端键盘输出文件:显示屏和打印机3、按数据的组织形式:ASCII文件(文本文件):每一个字节放一个ASCII代码二进制文件:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。二、文件指针在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。用FILE类型可以定义文件类型指针。定义说明文件指针的一般形式为:
FILE*指针变量标识符;其中FILE应为大写,在编写源程序时不必关心FILE结构的细节。例如:FILE*fp;表示fp是指向FILE结构的指针变量,通过fp
即可找到存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。在C语言中,文件操作都是由库函数来完成的。在本章内将介绍文件的打开、关闭以及主要的文件操作函数等。11.2文件的打开与关闭
1、文件打开函数fopen
fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式)说明:“文件指针名”必须是被说明为FILE类型的指针变量,“文件名”是被打开文件的文件名。“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如:FILE*fp;
fp=fopen("filea","r");其意义是在当前目录下打开文件filea,只允许进行“读”操作,并使fp指向该文件。
文件使用方式意义"rt"只读打开一个文本文件,只允许读数据"wt"只写打开或建立一个文本文件,只允许写数据"at"追加打开一个文本文件,并在文件末尾写数据"rb"只读打开一个二进制文件,只允许读数据"wb"只写打开或建立一个二进制文件,只允许写数据"ab"追加打开一个二进制文件,并在文件末尾写数据"rt+"读写打开一个文本文件,允许读和写"wt+"读写建立一个文本文件,允许读写"at+"读写打开一个文本文件,允许读,或在文件末追加数据"rb+“读写打开一个二进制文件,允许读和写"wb+"读写建立一个新二进制文件,允许读和写“ab+”读写打开一个二进制文件,允许读或在文件末追加数据2、文件的关闭文件一旦使用完毕,应用关闭文件函数fclose把文件关闭,以避免发生文件的数据丢失等错误。
fclose函数调用的一般形式是:fclose(文件指针);
例如:
fclose(fp);正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。对文件的读和写是最常用的文件操作。11.3文件的字符输入与输出在C语言中提供了多种文件读写的函数:字符读写函数:fgetc和fputc字符串读写函数:fgets和fputs格式化读写函数:fscanf和fprinf值得注意的是,使用以上函数之前应包含头文件stdio.h1、读字符函数fgetc
fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:字符变量=fgetc(文件指针);例如:ch=fgetc(fp);其意义是从打开的文件fp中读取一个字符并送入ch中程序(读入文件e11-1.c,在屏幕上输出)#include<stdio.h>main(){FILE*fp;charch;if((fp=fopen("e11_1.c","rt"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}fclose(fp);}二、写字符函数fputcfputc函数的功能是把一个字符写入指定的文件中,函数调用的形式为:fputc(字符量,文件指针);其中,待写入的字符量可以是字符常量或变量,例如:fputc(‘a’,fp);其意义是把字符a写入fp所指向的文件中。【程序】从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。#include<stdio.h>main(){FILE*fp;charch;if((fp=fopen("string","wt+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}printf("inputastring:\n");ch=getchar();while(ch!='\n'){fputc(ch,fp);ch=getchar();}rewind(fp);ch=fgetc(fp);while(ch!=EOF){putchar(ch);ch=fgetc(fp);}printf("\n");fclose(fp);}11.4文件的字符串输入与输出一、读字符串函数fgets功能是从指定的文件中读一个字符串到字符数组中。函数调用的形式为:fgets(字符数组名,n,文件指针);其中n是一个正整数。表示从文件中读出的字符串不超过n-1个字符。在读入的最后一个字符后加上串结束标志‘\0’。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。【程序】从e11_1.c文件中读入一个含10个字符的字符串。#include<stdio.h>main(){FILE*fp;charstr[11];if((fp=fopen("e11_1.c","rt"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}fgets(str,11,fp);printf("%s",str);fclose(fp);}二、写字符串函数fputs
功能是向指定的文件写入一个字符串调用形式:fputs(字符串,文件指针)其中字符串可以是字符串常量,也可以是字符数组名,或指针变量,例如:fputs(“abcd“,fp);其意义是把字符串“abcd”写入fp所指的文件之中。11.5文件的格式化输入与输出fscanf函数,fprintf函数与前面使用的scanf和printf
函数的功能相似,都是格式化读写函数。两者的区别在于fscanf
函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。这两个函数的调用格式为:fscanf(文件指针,格式字符串,输入表列);fprintf(文件指针,格式字符串,输出表列);例如:fscanf(fp,"%d%s",&i,s);/*从fp指向的文件中读取的数据分别放在i和s指向的内存中*/fprintf(fp,"%d%c",j,ch);/*将j和ch中的数据存入fp指向的文件中*/【程序】从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上。#include<stdio.h>struct
stu{charname[10];intnum;intage;charaddr[15];}boya[2],boyb[2],*pp,*qq;main(){FILE*fp;charch;inti;pp=boya;qq=boyb;if((fp=fopen("stu_list","wb+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getch();exit(1);}printf("\ninputdata\n");for(i=0;i<2;i++,pp++)scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);pp=boya;for(i=0;i<2;i++,pp++)fprintf(fp,"%s%d%d%s\n",pp->name,pp->num,pp->age,pp->addr);rewind(fp);for(i=0;i<2;i++,qq++)fscanf(fp,"%s%d%d%s\n",qq->name,&qq->num,&qq->age,qq->addr);printf("\n\nname\tnumberageaddr\n");qq=boyb;for(i=0;i<2;i++,qq++)printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);fclose(fp);}程序中fscanf和fprintf函数每次只能读写一个结构数组元素,因此采用了循环语句来读写全部数组元素。还要注意指针变量pp,qq由于循环改变了它们的值,因此在程序中两次分别对它们重新赋予了数组的首地址。本章小结
一、C语言中,用文件指针标识文件,当一个文件被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 充电站主要负责人检修维修安全操作规程
- 2.1 城乡空间结构-教学设计 高一地理湘教版(2019)必修第二册
- 2.5 三大改造 教学设计 2023-2024学年统编版八年级历史下册
- 1.2 数据管理与分析简介教学设计高中信息技术人教中图版2019选修3 数据管理与分析-人教中图版2019
- 12.2《跨学科实践:制作简易杆秤》(教学设计)-人教版(2024)初中物理八年级下册
- 2025-2026学年缤纷梦家园教学设计
- 浙江杭州市2025-2026学年高一下学期期末教学质量检测语文试题含答案
- 2026年天津市河西区社区工作者招聘笔试参考题库及答案详解
- 2026年南宁市江南区事业编单位人员招聘考试参考试题及答案详解
- 2026年青岛市黄岛区事业编单位人员招聘考试模拟试题及答案详解
- DB46T 727-2025《农用地土壤微塑料监测技术规程》
- 电厂锅炉电除尘布袋更换施工方案
- 建筑工程登革热和基孔肯雅热疫情防控监理实施细则(完整版可直接报审)
- 雨课堂学堂在线学堂云《风景写生(西安美术学院)》单元测试考核答案
- 《生活垃圾焚烧炉协同处置污泥技术规范(征求意见稿)》编制说明
- GB/T 46872-2025二氧化碳捕集、运输和地质封存词汇共性术语
- 2025年西班牙语DELEB1语法练习题
- 《2026年》银行中层岗位竞聘高频面试题包含详细解答
- 外企培训计划
- (2025)ACC专家共识声明:心源性休克的评估与管理核心要点解读26课件
- 光大证券招聘笔试题库2026
评论
0/150
提交评论