
#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
#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 所指向的文件*/ }