fseek函数的应用
#include<stdio.h>#include<stdlib.h>#include<time.h>intmain(){FILE*in;in=fopen("f:\\in...
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
FILE *in;
in=fopen("f:\\intfile.dat","w");
if (in==NULL){
printf("open file error!\n");
exit(0);
}
int a,b,x,y,i=0;
srand((unsigned)time(NULL));
for(i=0;i<1000;i++){
x=rand()%100;
fprintf(in,"%8d ",x);
}
fclose(in);
in=fopen("f:\\intfile.dat","r");
if (in==NULL){
printf("open file error!\n");
exit(0);
}
while(!feof(in)) {
if (fscanf(in, "%d",&a)!=1)
break;
printf("%8d",a);
}
fclose(in);
in=fopen("f:\\intfile.dat","r");
if (in==NULL){
printf("open file error!\n");
exit(0);
}
fseek(in,?,0);
fscanf(in,"%8d",&y);
printf("%8d",y);
system("pause");
return 0;
}
在这个程序的最后一点 我要用fseek函数 用fseek函数对文件指针进行定位,仅读取需要的数据。例如,分别将文件指针定位到第5个整数、第10个整数,读取这两个整数并显示;分别将文件指针定位到倒数第5个整数、倒数第10个整数,读取这两个整数并显示。那我的偏移量应该如何做
在最后打开文件的时候 用的是rb 展开
#include<stdlib.h>
#include<time.h>
int main()
{
FILE *in;
in=fopen("f:\\intfile.dat","w");
if (in==NULL){
printf("open file error!\n");
exit(0);
}
int a,b,x,y,i=0;
srand((unsigned)time(NULL));
for(i=0;i<1000;i++){
x=rand()%100;
fprintf(in,"%8d ",x);
}
fclose(in);
in=fopen("f:\\intfile.dat","r");
if (in==NULL){
printf("open file error!\n");
exit(0);
}
while(!feof(in)) {
if (fscanf(in, "%d",&a)!=1)
break;
printf("%8d",a);
}
fclose(in);
in=fopen("f:\\intfile.dat","r");
if (in==NULL){
printf("open file error!\n");
exit(0);
}
fseek(in,?,0);
fscanf(in,"%8d",&y);
printf("%8d",y);
system("pause");
return 0;
}
在这个程序的最后一点 我要用fseek函数 用fseek函数对文件指针进行定位,仅读取需要的数据。例如,分别将文件指针定位到第5个整数、第10个整数,读取这两个整数并显示;分别将文件指针定位到倒数第5个整数、倒数第10个整数,读取这两个整数并显示。那我的偏移量应该如何做
在最后打开文件的时候 用的是rb 展开
2个回答
展开全部
一、根据你写入的方法可知,每个数都会占8个字节( fprintf(in,"%8d ",x); )
fseek( in , (-1)*8 , SEEK_END); 这时,就会移动到倒数第一个数的开始位置
fseek( in , (-2)*8 , SEEK_END); 这时,就会移动到倒数第二个数的开始位置
。。。
可知:
fseek( in , 8*(-n) , SEEK_END ); 这时,就会移动到倒数第n个数的开始位置
fseek( in , 8*(-1) , SEEK_CUR ); 从当前位置向前移动一个数
。。。
可知:
fseek( in , 8*(-n) , SEEK_CUR ); 从当前位置向前移n一个数
因此:
fseek( in , 8*(-5) , SEEK_END );
fscanf(in, "%d",&a);
printf("%8d",a);
fseek( in , (-5)*8 , SEEK_CUR ); //再向前移动5个
fscanf(in, "%d",&a);
printf("%8d",a);
可实现你的想法
fseek( in , (-1)*8 , SEEK_END); 这时,就会移动到倒数第一个数的开始位置
fseek( in , (-2)*8 , SEEK_END); 这时,就会移动到倒数第二个数的开始位置
。。。
可知:
fseek( in , 8*(-n) , SEEK_END ); 这时,就会移动到倒数第n个数的开始位置
fseek( in , 8*(-1) , SEEK_CUR ); 从当前位置向前移动一个数
。。。
可知:
fseek( in , 8*(-n) , SEEK_CUR ); 从当前位置向前移n一个数
因此:
fseek( in , 8*(-5) , SEEK_END );
fscanf(in, "%d",&a);
printf("%8d",a);
fseek( in , (-5)*8 , SEEK_CUR ); //再向前移动5个
fscanf(in, "%d",&a);
printf("%8d",a);
可实现你的想法
追问
高人 你还在不 能不能留个联系方式 我现在要学习C语言 能不能给偶尔指点下
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询