使用fseek()函数随机访问文件
使用fseek()函数随机访问文件
努力喵 发表于2年前
使用fseek()函数随机访问文件
  • 发表于 2年前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

// randomfile.c -- 使用fseek()函数随机访问文件
#include <stdio.h>
#include <stdlib.h>
#define MAX 50

int main(void){
  FILE *fp;
  int data, count, array[MAX];
  long offset;
  
  // 为数组各元素赋值
  for(count = 0; count < MAX; count++)
    array[count] = count * 10;
  
  // 以写入模式打开二进制文件
  if((fp = fopen("RANDOM.DAT", "wb")) == NULL){
    fprintf(stderr, "Error opening file.");
    exit(1);
  } 
  
  // 将数组写入文件,然后关闭文件
   if((fwrite(array, sizeof(int), MAX, fp)) != MAX){
     fprintf(stderr, "Error writing data to file.");
     exit(1);
   }
   fclose(fp);
   
   // 以二进制模式打开文件
   if((fp = fopen("RANDOM.DAT", "rb")) == NULL){
     fprintf(stderr, "Error opening file.");
     exit(1);
   }
   
   /*询问用户希望读取哪一个元素。
     输入该元素并显示它,用户输入-1时退出程序*/
    while(1){
      printf("\nEnter element to read, 0-%d, -1 to quit: ", MAX-1);
      scanf("%ld", &offset);
      
      if(offset < 0)
        break;
      else if(offset > MAX-1)
        continue;
      
      //将位置指示符移至制定元素
      if((fseek(fp, (offset * sizeof(int)), SEEK_SET)) != 0){
        fprintf(stderr, "Error using fseek().");
        exit(1);
      }
      fread(&data, sizeof(int), 1, fp);
      printf("\nElement %ld has value %d.", offset, data);
  }
  fclose(fp);
  return 0;
}


共有 人打赏支持
粉丝 6
博文 105
码字总数 34117
×
努力喵
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: