(6.46)-第45课(10.2节-文件的读写)_第1页
(6.46)-第45课(10.2节-文件的读写)_第2页
(6.46)-第45课(10.2节-文件的读写)_第3页
(6.46)-第45课(10.2节-文件的读写)_第4页
(6.46)-第45课(10.2节-文件的读写)_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件的读写文件操作从文件中读字符函数fgetc函数原型:intfgetc(FILE*fp);从文件指针fp指向的文件当前位置(位置指针)读出一个字符,然后文件位置指针自动后移,指向文件中的下一个字符,返回值为读入的字符。若遇到文件结束符,则返回结束符EOF(-1)功能:ch=fgetc(fp);例【例1:】将磁盘文件”mydata.txt”的信息读出并显示到屏幕上。(假设文件已经存在。若不存在,可以用记事本或其它文本编辑器编辑并保存)#include<stdio.h>voidmain(){FILE*fp;//定义文件指针charc;if((fp=fopen(“mydata.txt”,“r”))==NULL) {printf(“\nFilenotexist!”);//如果文件不能成功打开,输出出错提示exit(0);//结束程序运行}while((c=fgetc(fp))!=EOF)//逐个读取文件里的字符,直到遇到结束字符为止putchar(c);//将字符显示在屏幕上fclose(fp);//关闭文件

}向文件写入字符函数fputc函数返回值:输出成功,返回值就是输出的字符;输出失败,返回一个EOF(值为-1)。功能:把一个字符ch写到fp指向的磁盘文件上去函数原型:intfputc(intch,FILE*fp);

FILE*fp;charch=‘A’;…fputc(ch,fp)例【例2:】从键盘输入一些字符存到一个磁盘文件data.txt中,以“#”结束#include<stdio.h>voidmain(){FILE*fp;//定义文件指针charc;if((fp=fopen(“d:\\example\\data.txt”,“w”))==NULL) {printf(“\nFilecannotopen!”);//如果文件不能成功打开,输出出错提示exit(0);//结束程序运行}while((c=getchar())!=‘#’)//连续从键盘输入若干字符,直到遇到#字符为止fputc(c,fp);//将字符写入fp所指向的文件中fclose(fp);//关闭文件}从文件中读字符串函数fgets说明:功能:从指针fp指向的文件中读取len–1个字符,把它送到由指针buf指向的字符数组中函数原型:char*fgets(char*buf,intlen,FILE*fp);字符数组的长度应大于len,可存放len-1个字符,字符数组的最后一个元素为’\0’若在读入len-1个字符前遇到换行符’\n’或文件结束符号EOF,立即结束读入操作将字符串写入文件的函数fputs功能:函数原型:char*fputs(char*buf,FILE*fp);形参buf可以是字符串常量、字符数组名、指针变量把由指针buf指向的字符数组中的字符串写入由指针fp指向的文件中【例3:】从键盘输入字符串存入文件,再从文件读回显示#include<stdio.h>voidmain(){FILE*fp;charstring[81];if((fp=fopen(“file.txt”,“w”))==NULL)//以“写”方式打开文件{printf("cann'topenfile");exit(0);}while(strlen(gets(string))>0)//从键盘上输入字符串

{fputs(string,fp);//将字符串写入文件fputs("\n",fp);}fclose(fp);//关闭文件if((fp=fopen(“file.txt”,“r”))==NULL)//以“读”方式重新打开文件{printf("cann'topenfile");exit(0);}while(fgets(string,81,fp)!=NULL)//从文件中读取一串字符puts(string);//在屏幕上显示字符串

fclose(fp);}按指定格式读写文件的函数fprintf、fscanf调用格式:fscanf(fp,“%d,%f”,&i,&t);//若文件中有3

,

4.5,则将3读出送入变量i,4.5读出送入变量tfprintf(fp,“%d,%6.2f\n”,i,t);//将变量i和t的值按%d,%6.2f格式写入到fp所指向的文件中由于输入输出时要进行ASCII码和二进制形式的转换,费时较多fprintf和fscanf函数对磁盘文件读写;printf和scanf函数对显示器或键盘操作

fscanf(fp,格式字符串,地址列表);fprintf(fp,格式字符串,输出列表);例数据块读写函数fread、fwritebuffer:要读入的数据块的存放首地址或要输出的数据块的起始地址size:每个要读/写的数据块的大小(字节数)count:要读/写的数据块的个数fp:要读/写的文件指针intfread(void*buffer,intsize,intcount,FILE*fp);intfwirte(void*buffer,intsize,intcount,FILE*fp);函数原型:参数说明:fread与fwrite一般用于二进制文件的输入/输出【例4:】从键盘输入4个学生的数据,然后转存到磁盘上,并在屏幕上显示磁盘文件的内容#include<stdio.h>#defineSIZE10structstudent{charname[10];intnum;intage;charaddr[20];};voidmain(){voidsave(structstudent);//声明函数原型voiddisplay(structstudent);

//声明函数原型structstudentst[SIZE];

for(i=0;i<SIZE;i++)scanf("%s%d%d%s",st[i].name,&st[i].num,&st[i].age,st[i].addr);

save(st);

//调用函数savedisplay(st);

//调用函数display}voidsave(structstudentstud){FILE*fp;inti;if((fp=fopen("d:\\stu_list.dat","wb"))==NULL){printf("cannotopenfile\n");return;}for(i=0;i<SIZE;i++)if(fwrite(&stud[i],sizeof(structstudent),1,fp)!=1)

printf("filewriteerror\n");

fclose(fp);}voiddisplay(structstudentstud){FILE*fp;inti;if((fp=fopen("d:\\stu_list.dat","rb"))==NULL){printf("cannotopen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论