#include #define null o void pro err(FILE*fp)/错误测试与处理的通用函数* if(f printi("文件无法被打开!n") exit(o) }/*有错输出提示信息后中止运行* else return,/*无错返回继续运行* void maino FILE*fp; Int 1, X, if(fp= fopen" e: Readonly.datr;"rb")=NUL)/*打开一个只读二进制文件 printi("文件无法被打开!Ⅶn") exit(O); for(i=0;j<3i计+)/*循环读取第1,3,5个实数* fsek(fp(ongi* ' sizeof(int),0),陣*指向当前要读取数据的位置* pro_ err(fp);,/*进行定位后错误测试*/ fread(&x, sizeof(int,1fp),/*从当前位置读取1个整数* pro err(fp,/进行定位后错误测试* printf("%d%dn"2*计+1,x),/*输出读取的单精度数据*/ fseek(fp,-2L* sizeof(int), SEEK END);/*指向第9个整数* pro err(fp),体*进行定位后错误测试* fread&x, sizeof(int),1,fp);/从当前位置读取1个整数* pro_er(fp);,/*进行读数据错误测试*/ printf("%d%dn",9,x);/*输出读取的整数*/ fseek((fp,-L* sizeof(int, SEEK END);/指向第10个整数* pro err(fp);,/*进行定位后错误测试* fread(&x, sizeof(int),1,fp),体*从当前位置读取1个整数*/ pro err(fp);,/*进行读数据错误测试 printf("%d%dn",10,x);/输出读取的整数* fclose(印p),陣*关闭印所指向的文件*
#include #define NULL 0 void pro_err(FILE*fp) /*错误测试与处理的通用函数*/ { if(ferror(fp)!=0) { printf("文件无法被打开!\n"); exit(0); } /*有错输出提示信息后中止运行*/ else return; /*无错返回继续运行*/ } void main() { FILE *fp; int i,x; if((fp=fopen("e:\\readonly.dat","rb"))==NULL) /*打开一个只读二进制文件*/ { printf("文件无法被打开!\n"); exit(0); } for(i=0;i<3;i++) /*循环读取第 1,3,5 个实数*/ { fseek(fp,(long)(i*sizeof(int)),0); /*指向当前要读取数据的位置*/ pro_err(fp); /*进行定位后错误测试*/ fread(&x,sizeof(int),1,fp); /*从当前位置读取 1 个整数*/ pro_err(fp);/*进行定位后错误测试*/ printf("%d %d\n",2*i+1,x); /*输出读取的单精度数据*/ } fseek(fp,-2L*sizeof(int),SEEK_END); /*指向第 9 个整数*/ pro_err(fp); /*进行定位后错误测试*/ fread(&x,sizeof(int),1,fp); /*从当前位置读取 1 个整数*/ pro_err(fp); /*进行读数据错误测试*/ printf("%d %d\n",9,x); /*输出读取的整数*/ fseek(fp,-1L*sizeof(int),SEEK_END); /*指向第 10 个整数*/ pro_err(fp); /*进行定位后错误测试*/ fread(&x,sizeof(int),1,fp); /*从当前位置读取 1 个整数*/ pro_err(fp); /*进行读数据错误测试*/ printf("%d %d\n",10,x); /*输出读取的整数*/ fclose(fp); /*关闭 fp 所指向的文件*/ }