1. #include<stdio.h> 
  2. #include<stdlib.h> 
  3. #define ARSIZE 1000 
  4.  
  5. int main(void
  6.     double numbers[ARSIZE]; 
  7.     int i; 
  8.     FILE *iofile; 
  9.     const char *file = "number.bat";//二进制模式的文件,无精度损失,很容易计算处位置  
  10.     long pos; 
  11.     double value; 
  12.      
  13.     for(i=0;i<ARSIZE;i++){ 
  14.         numbers[i] = 100.0 * i + 1.0 / (i + 1); 
  15.     } 
  16.     if((iofile = fopen(file,"wb")) == NULL){//以二进制模式写入  
  17.         puts("Open Error"); 
  18.         exit(-1); 
  19.     } 
  20.     fwrite(numbers,sizeof(double),ARSIZE,iofile);//以二进制模式写入,double类型占64位,不能通过文本编辑器读取,因为没有翻译成字符串  
  21.     fclose(iofile); 
  22.     if((iofile = fopen(file,"rb")) == NULL){//以二进制模式读出  
  23.         puts("Open Error"); 
  24.         exit(-1); 
  25.     } 
  26.     printf("Enter an index in the range 0-%d.\n",ARSIZE-1); 
  27.     scanf("%d",&i); 
  28.     while(i>=0 && i<ARSIZE){ 
  29.         pos = (long)i*sizeof(double);//计算偏移量  
  30.         fseek(iofile,pos,SEEK_SET);//将指针移到适当位置  
  31.         fread(&value,sizeof(double),1,iofile); 
  32.         printf("The value there is %f.\n",value); 
  33.         printf("Next index:\n"); 
  34.         scanf("%d",&i); 
  35.     } 
  36.     fclose(iofile); 
  37.     puts("Bye"); 
  38.     return 0; 
  39. }