




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件第11章1211.1文件的基本概念11.2文件的打开与关闭11.3文件的读写11.4文件的随机读写第11章文件11.1文件的基本概念C语言把文件看作字符(字节)的序列,即由一个一个的字符(字节)的数据顺序组成。二进制文件存放的是二进制形式,占2个字节文本文件’1’、’0’、’0’、’0’、’0’的ASCII码,占5个字节文件分为文本(text)文件和二进制(binary)文件。001001110001000010000(内存)11.2文件的打开与关闭11.2.1文件类型指针在TurboC的stdio.h文件中就有以下文件类型定义:typedefstruct{……}FILE;
FILE*fp;函数原型:FILE*fopen(char*filename,char*mode);调用格式:fp=fopen(文件名,使用文件方式);例如:fp=fopen(“a1”,“r”);11.2.2文件的打开文件使用方式含义"r"(只读)为输入打开一个已有的文本文件"w"(只写)为输出打开一个新的文本文件,若已存在,则覆盖它"a"(追加)向文本文件尾添加数据"rb"(只读)为输入打开一个已有的二进制文件"wb"(只写)为输出打开一个二进制文件,若已存在,则覆盖它"ab"(追加)向二进制文件尾添加数据"r+"(读写)为读/写打开一个已有的文本文件"w+"(读写)为读/写建立一个新的文本文件,若已存在,则覆盖它"a+"(读写)为读/写打开一个文本文件,数据追加到末尾"rb+"(读写)为读/写打开一个已有的二进制文件"wb+"(读写)为读/写建立一个新的二进制文件"ab+"(读写)为读/写打开一个二进制文件7常用以下程序段打开文件:if((fp=fopen("d:\\a1","rb"))==NULL){printf("\nCan’topenthisfile!\n");system("pause");exit(1);}11.2.3文件的关闭
函数原型:intfclose(FILE*fp);调用格式:fclose(文件指针);例如:fclose(fp);11.3文件的读写
头文件stdio.h字符读写函数:fgetc和fputc字符串读写函数:fgets和fputs数据块读写函数:fread和fwrite格式化读写函数:fscanf和fprintf11.3.1字符读写函数fgetc和fputc
1.字符输入函数fgetc函数原型:intfgetc(FILE*fp);调用格式:字符变量=fgetc(文件指针);例如:ch=fgetc(fp);调用格式:fputc(字符,文件指针)例如:fputc('a',fp);2.字符输出函数fputc函数原型:intfputc(charch,FILE*fp);3.文件结束检测函数feof函数原型:
intfeof(FILE*fp);4.位置指针复位函数rewind函数原型:
voidrewind(FILE*fp);调用格式:
feof(文件指针);调用格式:
rewind(文件指针);【例11.1】从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;charch;
if((fp=fopen("d:\\example\\str.txt","w+"))==NULL){printf("Cannotopenfile!");system("pause");exit(1);}printf("Inputastring:\n");ch=getchar();
while(ch!='\n'){fputc(ch,fp);ch=getchar();}
rewind(fp);ch=fgetc(fp);while(!feof(fp)){putchar(ch);ch=fgetc(fp);}printf("\n");fclose(fp);return0;}11.3.2字符串读写函数fgets和fputs1.字符串输入函数fgets函数原型:char*fgets(char*str,intn,FILE*fp);例如:
fgets(str,n,fp);2.字符串输出函数fputs函数原型:
intfputs(char*str,FILE*fp);例如:
fputs("abcd",
fp);【例11.2】用字符串读写函数fgets和fputs改写例11.1中的程序。#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;chars1[81],s2[81];if((fp=fopen("d:\\example\\str.txt","w+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");
system("pause");exit(1);}printf("Inputastring:\n");fgets(s1,81,stdin);fputs(s1,fp);
rewind(fp);fgets(s2,81,fp);
puts(s2); fclose(fp);return0;}系统定义了3个文件指针:stdin、stdout和stderr分别指向标准输入文件(键盘)、标准输出文件(显示器)和标准出错输出文件(出错信息),它们是由系统自动打开的,可直接使用。11.3.3
数据块读写函数fread和fwrite
1.输入数据块函数fread函数原型:int
fread(char*buffer,unsignedsize,unsignedcount,FILE*fp);调用格式:
fread(buffer,size,count,fp);例如:fread(fa,4,5,fp);
2.输出数据块函数fwrite函数原型:
int
fwrite(char*buffer,unsignedsize,unsignedcount,FILE*fp);调用格式:
fwrite(buffer,size,count,fp);如,已知结构体类型为:structstu{charname[10];intnum;intage;charaddr[20];}stu[30];从文件读:for(i=0;i<30;i++)fread(&stu[i],sizeof(structstu),1,fp);向文件写:for(i=0;i<30;i++)fwrite(&stu[i],sizeof(structstu),1,fp);【例11.3】从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据,显示在屏幕上。#include<stdio.h>#include<stdlib.h>structstu{charname[15];intscore;}s1[2],s2[2],*p1,*p2;intmain(){FILE*fp;inti;p1=s1;p2=s2;if((fp=fopen("d:\\example\\stu_list","wb+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getchar();exit(1);}printf("\nInputdata:\n");for(i=0;i<2;i++,p1++)scanf("%s%d",p1->name,&p1->score);p1=s1;
fwrite(p1,sizeof(structstu),2,fp);rewind(fp);fread(p2,sizeof(structstu),2,fp);printf("\nnamescore\n");
for(i=0;i<2;i++,p2++)printf("%-15s%d\n",p2->name,p2->score);fclose(fp);return0;}运行情况如下:Inputdata:liu_ming82↙wang_li91↙namescoreliu_ming82wang_li9111.3.4格式化读写函数fscanf和fprintf
1.格式化输入函数fscanf函数原型:
intfscanf(FILE*fp,char*format,args);调用格式:
fscanf(文件指针,格式字符串,地址列表);例如:
fscanf(fp,"%d%s",&i,s);2.格式化输出函数fprintf函数原型:
intfprintf(FILE*fp,char*format,args);调用格式:
fprintf(文件指针,格式字符串,输出表列);
例如:
fprintf(fp,"%d%c",j,ch);
fscanf(stdin,格式字符串,地址列表);
scanf(格式字符串,地址列表);
fprintf(stdout,格式字符串,输出列表);
printf(格式字符串,输出列表);【例11.4】用函数fscanf和fprintf修改例11.3中的程序。#include<stdio.h>#include<stdlib.h>structstu{charname[15];intscore;}s1[2],s2[2],*p1,*p2;intmain(){FILE*fp;inti;p1=s1;p2=s2;if((fp=fopen("d:\\example\\stu.txt","w+"))==NULL){printf("Cannotopenfilestrikeanykeyexit!");getchar();exit(1);}printf("\nInputdata\n");for(i=0;i<2;i++,p1++)scanf("%s%d",p1->name,&p1->score);p1=s1;for(i=0;i<2;i++,p1++)fprintf(fp,"%s%d\n",p1->name,p1->score);rewind(fp);for(i=0;i<2;i++,p2++)fscanf(fp,"%s%d\n",p2->name,&p2->score);p2=s2;printf("\nnamescore\n");for(i=0;i<2;i++,p2++)printf("%-15s%d\n",p2->name,p2->score);fclose(fp);return0;}程序运行情况:Inputdata:liu_ming82↙wang_li91↙namescoreliu_ming82wang_li9111.4文件的随机读写函数原型:intfseek(FILE*fp,longoffset,intbase);起始点标识符数字文件头SEEK_SET0当前位置SEEK_CUR1文件尾SEEK_END2fseek(fp,100L,0);将位置指针移到离文件头100个字节处。fseek(fp,50L,1);将位置指针移到离当前位置50个字节处。fseek(fp,-10L,2);将位置指针移到离文件尾10个字节处。调用格式:fseek(文件指针,位移量,起始点);【例11.5】将例11.3所建立的学生文件stu_list中的第二个学生的数据读出。程序运行结果:namescorewan
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 对食堂空间合理利用以打造良好的用餐氛围的研究
- 宾馆酒店消防安全措施
- 临泽沙河管理制度
- 开题报告:海马GN16发动机起动机设计
- 主动安全管理制度
- 2025年免疫治疗在干燥综合征治疗中的应用进展报告
- 主食卫生管理制度
- 义务学校管理制度
- 乌江中学管理制度
- 事权下放管理制度
- 国家开发大学电大《心理学》课程形成性考核册试题及答案(1-4)
- 2024年中考语文复习考点帮考点四 标点符号(解析版)
- 2023年老年病科半年工作总结报告
- 护理责任组长岗位竞聘
- 校园文印室外包服务投标方案(技术标)
- 台州简介课件
- 营销客户维护技巧与方法
- 《文献阅读报告》课件
- 《丁苯酞作用机制》课件
- 各类施工材料采购及配送服务方案
- 偏差管理培训课件
评论
0/150
提交评论