fseek( ) method in C language

May 01, 2015 0 Comments

In order to access the file directly the file handling function fseek( ) is used. Access is nothing but to seek. So, it is easy to remember the function for direct access. The syntax of the function fseek( ) is as follows:

int fseek( FILE *fp, long offset, int whence)

fp is the file pointer
offset is the number of bytes to skip
whence can be replaced with SEEK_SET- from beginning
                                                SEEK_CUR- from current position
                                                SEEK_END - from the end
This position repositions the file or record pointer from the whence position by offset bytes on the file stream fp. The function returns 0 on success or non-zero on unsuccessful.

The following program gives the idea of using the fseek( ) function.

/* Program to display the details of the students using fseek( ) in the binary file "studb.dat" */

main ( )
struct Stud
int rollno, marks[5];
char fname[25];
float avg;
typedef struct Stud STUDENT ; /* renaming the data type struct Stud to Student */
int idx;
FILE *fp;
STUDENT s; /* s is the structure variable to read/write student's data */
fp = fopen("studb.dat","rb"); /* Read mode to scan the records from the binary file "studb.dat" */
if(fp == NULL)
printf("File opening error....");
clrscr( );       /* To clear the screen and to display heading */
fseek(fp,2*sizeof(s),SEEK_CUR);  /* to remove to 3rd record */
fread(&s,sizeof(s),1,fp);  /* to read 3rd record directly */
exit(1);  /* To come out of the loop, at the end of the file */
printf("%4d %26s",s.rollno,s.fname); /* Data is displayed on the screen */
printf("%6d",s.marks[idx]);   /* Next set of Data is displayed */
printf("%8.2f \n",s.avg);  /* Avg is displayed and new line generated for the next record */

Bill Smithwick

Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard. Google