各位C语言的高手们,小弟我今天遇到一个fseek函数,不知道他在一下程序的含义是什么,还望各位不吝赐教啊

#include<stdio.h>
#include<stdlib.h>
#define Size 10
struct student
{
char name[10];
int num;
int age;
char addr[15];
}stu[Size];
int main()
{
int i;
FILE *fp;
if((fp=fopen("student.txt","rb"))==NULL)
{
printf("Can't open the file!\n" );
exit (0);
}
for(i=0;i<Size;i+=2)
{
fseek(fp,i*sizeof(struct student),0); /*这句话在此程序里面的作用是什么啊?*/
fread(&stu[i],sizeof(struct student),1,fp);
printf("%-10s %4d %4d %-15s\n",stu[i].name,stu[i].num,stu[i].age,stu[i].addr);
}
fclose(fp);
system("pause");
return 0;
}

fseek 用于二进制方式打开的文件,移动文件读写指针位置.
通常文件打开后,读写位置按先后顺序.但有时你想变动读写位置,例如重新从某处起,再读一次.

fseek有3个参数,函数原型:
int fseek( FILE *stream, long offset, int origin );
第一个是文件流,第3个是指针零点位置,第2个是把指针移动到的地点.
第3个参数取值等于下列3个之1
SEEK_CUR -- 1 为当前指针位置
SEEK_END -- 2 为文件尾
SEEK_SET -- 0 为文件起始
第2个参数为偏移量,字节数,长整型.

fseek(fp,i*sizeof(struct student),0); 把文件指针从文件头移动,i个结构体长度追问

那上面的那个Fseek函数是不是改变了文件的读写位置,然后后面的fread函数就从改变了的文件位置中读取数据啊????

追答

当i=0,文件指针还在文件开头,fread函数读取第一结构体中的数据
当i=1,文件指针从文件开头移动下一结构体,fread函数读取第二个结构体中的数据

可以那么理解

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-22
你的文件保存的是一个student结构体
fseek(fp,i*sizeof(struct student),0);
是从文件头每次移动一个结构体长度,然后去取下一个结构体数据

各位C语言的高手们,小弟我今天遇到一个fseek函数,不知道他在一下程序...
fseek 用于二进制方式打开的文件,移动文件读写指针位置.通常文件打开后,读写位置按先后顺序.但有时你想变动读写位置,例如重新从某处起,再读一次.fseek有3个参数,函数原型:int fseek( FILE *stream, long offset, int origin );第一个是文件流,第3个是指针零点位置,第2个是把指针移动到的地点.第...

在C语言中fseek()的功能
C语言中的fseek()函数是一项重要的流操作工具,其核心功能是重定位数据流或文件内部的文件位置指针。简单来说,这个函数允许程序员在文件中指定一个特定的位置,无论文件指针当前指向何处,都能通过fromwhere参数和offset(偏移量)将其移动到相应的位置。当调用成功,函数会将文件指针移动到偏移量所指定的...

在c语言中,fseek(fp,sizeof(int)*3,0)是什么意思
所以,fseek(fp,sizeof(int)*3,0)函数将文件指针指向从文件开头,向后偏移3个int单元的地方。

c语言:这两个语句什么意思 fseek(fp,0L,0); fprintf(fp,"%d\\n",a...
fseek(fp,0L,0);应该是这样吧,总是为文件指针 指向文件的第一个位置。fseek()函数 功能:移动文件位置指针到指定的位置 一般形式:fseek(文件指针,位移量,起始点);其中位移量表示位置指针移动的字节数,要求为long类型,以便文件长度大于64KB时不会出错 起始点表示从何处开始计算位移量,规定有...

在C语言中fseek()的功能
fseek()是重定位流(数据流\/文件)上的文件内部位置指针。注意:文件指针指向文件\/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变或指向别的文件。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败...

C语言的文件随机访问fseek()和ftell()函数
本文主要讨论fseek()和ftell()这两个C语言中的文件操作函数。fseek()函数用于在文件中移动读写位置,参数包括已打开的文件指针、偏移量和起始点模式。偏移量可以为正(前移)、负(后移)或零(不移动)。起始点模式可以是文件开头(SEEK_SET)、文件当前位置(SEEK_CUR)或文件末尾(SEEK_END)。如果...

fseek函数的功能
以C语言为例,fseek函数的功能是设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、...

C语言中,fseek函数怎么控制移动的方向?怎么往前或往后,最好能有个...
fseek有三个参数,第1个是文件句柄,通过打开文件时得到;第2个就是移动的字节数,这个数可以是正的,就是向后(文件尾部)移动,也可以是负的,即向前(文件头部)移动;第3个参数指明从哪里移动,如果写SEEK_SET就是从文件头部移动多少字节,如果写SEEK_END则是从尾部开始移动,SEEK_CUR则是从当前位置...

我这有C语言的题,哪位大侠能解决一下,必有重谢!
A:用typedef可以定义各种类型名,但不能用来定义变量B:typedef和#define都是在预编译时处理的C:用typedef只是将已存在的类型用一个新的标识符来代表D:使用typedef有利于程序的通用和移植 A B C D 2、以下选项中,能定义s为合法的结构体变量的是( )。本题(1分)A:typedef struct abc { double a; char b[...

c语言,有高手教我怎么导出运行结果吗??导出到指定文件。
1,fgets函数fgets函数用来从文件中读入字符串.调用形式如下:fgets(str,n,fp);函数功能是:从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符时,则遇到换行符或一个EOF结束本次读操作,并已str作为函数值返回.13.8fgets函数和fputs函数2,fputs函数...

相似回答
大家正在搜