-->

Friday, May 1, 2015

fseek( ) method in C language

fseek( ) method in C language

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)

Where:
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" */

#include<stdio.h>
#include<conio.h>
#include<process.h>
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....");
exit(1);
}
clrscr( );       /* To clear the screen and to display heading */
printf("%4s%27s","RNo","FName");
printf("%7s%7s%7s%7s%7s","Marks1","Marks2","Marks3","Marks4","Marks5");
printf("%9s\n\n","Avg");
fseek(fp,2*sizeof(s),SEEK_CUR);  /* to remove to 3rd record */
fread(&s,sizeof(s),1,fp);  /* to read 3rd record directly */
if(feof(fp))
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 */
for(idx=0;idx<5;idx++)
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 */
fclose(fp);
}

Read other related articles

Also read other articles

© Copyright 2013 Computer Programming | All Right Reserved