fseek原型: fseek(FILE *stream, long offset, int fromwhere); 参考资料
fseek(fp,0L,SEEK_SET);//定位到文件开始处
ftell原型: ftell(FILE *stream);
long count=0l;
count=ftell(fp);//获取当前位置
选择性读取示例:
#include<stdio.h>
#include<Stdlib.h>
#define nam 40
int main(void)
{
FILE *pi;
int number[nam];
int k=0,val;
long g=0l;
if((pi=fopen("number","wb"))==NULL){
puts("File open error!");
exit(EXIT_FAILURE);
}
for(int y=0;y<nam;y++)
number[y]=y*4+2;
fwrite(number,sizeof(int),nam,pi);
//↓↓↓↓↓↓↓↓相同↓↓↓↓↓↓↓↓↓
/*
for(int y=0;y<nam;y++){
number[y]=y*4+2;
fwrite(&number[y],sizeof(int),1,pi);
}
*/
fflush(pi);
if(fclose(pi)!=0)
puts("File close error!");
if((pi=fopen("number","rb"))==NULL){
puts("File open error!");
exit(EXIT_FAILURE);
}
puts("Enter number:");
if((scanf("%d",&k))!=1)
puts("Number error!");
while(k>=0 && k<nam)
{
g=(long)k*sizeof(int);
fseek(pi,g,SEEK_SET);
fread(&val,sizeof(int),1,pi);
printf("%d\n",val);
scanf("%d",&k);
}
if((fclose(pi))!=0)
puts("Close error!");
return 0;
}
倒序显示示例:
#include<stdio.h>
#include<stdlib.h>
#define SIZE 40
int main(void)
{
FILE *pi;
long val,count;
char file[SIZE];
char ch;
puts("Enter file name:");
gets(file);
if((pi=fopen(file,"r"))==NULL)
{
puts("Open file error!");
exit(EXIT_FAILURE);
}
fseek(pi,0l,2l);//2l==SEEK_END
val=ftell(pi);
for(count=0l;count<=SIZE;count++){
fseek(pi,-count,SEEK_END);
ch=getc(pi);
putc(ch,stdout);
}
puts("");
if(fclose(pi)!=0)
puts("File close error!");
return 0;
}