如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第13章文件13.1C文件的概述文件的分类:三、文件的基本操作⑴非缓冲文件系统∶程序与外设直接进行数据交换。1.文件类型(FILE)2.定义FILE类型指针变量13.2文件的打开与关闭⑶文件使用方式例:#include<stdio.h>main(){FILE*fp;if((fp=fopen("stu.dat","r"))==NULL){printf("filenotfound.");exit(0);}else{printf("fileopenedok!");fclose(fp);}}13.2.2文件的关闭函数(fclose函数)13.3文件的读写2.fgetc函数例:阅读程序。#include"stdio.h"#defineNULL0main(){FILE*fp;intcount=0;charc;if((fp=fopen(“file.txt”,“r”))==NULL){printf(“Can’tOpenFile\n”);exit(0);}c=fgetc(fp);while(c!=EOF){count++;c=fgetc(fp);}printf(“count=%d\n”,count);fclose(fp);}13.3.2字符串的读写函数13.3.3数据块的读写函数例1把数组a写入文件fa;再从fa读入数组b。#include"stdio.h"main(){FILE*fp;inta[100]={1,5,6,78,21,34,67,87,23},b[100],i;fp=fopen("tmp","wb");fwrite(a,sizeof(a),1,fp);/*fwrite(a,sizeof(int),100,fp);*/fclose(fp);fp=fopen("tmp","rb");fread(b,sizeof(a),1,fp);for(puts(""),i=0;i<10;i++)printf("%6d",b[i]);fclose(fp);}13.3.4格式化读写函数13.4文件的定位与出错检测功能:把文件的读写位置指针移到指定的位置。4.ferror()函数ferror()函数用来确定文件操作系统中是否出错。其函数原型为:intferror(FILE*fp);如果ferror()函数返回值为0,则表示此前的文件操作成功;否则,若返回一个非0值,则表示最近一次文件操作出错。由于对文件的每次I/O操作都会形成新的出错码,所以在每次文件操作后应立即调用ferror()函数查看此次操作是否成功,否则会丢失信息。表示上述功能常用的语句的是:5.clearer()函数clearer()函数的函数原型为:voidclearer(FILE*fp);功能是清除文件结束标志和文件出错标志(设置为0)。本函数没有返回值。#include<stdio.h>voidmain(){FILE*fp,*fp2;charc;if((fp=fopen("data.dat","r"))==NULL){printf("不能打开文件\n");return;}if((fp1=fopen(data1.dat),"w")==NULL){printf("不能建立文件\n");return;}while(!feof(fp)){c=fgetc(fp);c=(c+1)%256;fputc(c,fp1);}fclose(fp);fclose(fp);}编写程序,创建数据文件goods.dat用于存储商品信息。已知每一个商品包括:名称,单价,进货量,和库存4项数据。按指定的格式读写.#include<stdio.h>main(){intcount,amount,stock;floatprice;charname[20];FILE*fp;if((fp=fopen(“goods.dat”,”wb”))==NULL){printf(“cannotopenfile.\n”);exit(0);}for(count=0;;count++){fprintf(“%d”,count+1);scanf(“%s%d%d”,name,&price,&amount,&stock);if(price==0)break;printf(fp,”%s\n%.2f,%d,%d”,name,price,amount,stock);}fclose(fp);fp=fopen(“goods.dat”,”rb”);printf(“overstockgoodsis:\n”);while(!feof(fp)){fscanf(fp,”%s%f,%d,%d”,na