// 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;
}
转载于:https://my.oschina.net/u/241930/blog/519595