| Previous | Home | Next |
Random Access to file in C
Random access means we can move to any part of a file and read or write data from it without having to read through the entire file. we can access the data stored in the file in two ways.
- Sequentially
- Randomly
Some points about Sequentially and Randomly accessing of Files
- If we want to access the forty fourth record then first forty three record read sequentially to reach forty four record
- In Random access data can be accessed and processed directly
- If there is no need to read each record sequentially then use Randomly access
- If we want to access a particular record random access takes less time than the Sequential access
C supports these function for random access file.
- fseek( ) Function
- ftell ( ) Function
This function is used for setting the file position pointer at the specified bytes . fseek is a function belonging to the ANCI C standard Library and included in the file <stdio.h>. Its purpose is to change the file position indicator for the specified stream.
int fseek(FILE *stream_pointer, long offset, int origin);
Argument meaning
stream_pointer is a pointer to the stream FILE structure of which the position indicator should be changed;
offset is a long integer which specifies the number of bytes from origin where the position indicator should be placed;
origin is an integer which specifies the origin position. It can be:
- SEEK_SET: origin is the start of the stream
- SEEK_CUR: origin is the current position
- SEEK_END: origin is the end of the stream
/* * Program to understand the use of fseek function */
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct emprecord
{
char name[30];
int age;
float sal;
}emp;
void main()
{
int n;
FILE *fp;
fp=fopen("employee.dat","rb");
if (fp==NULL)
{
printf("/n error in opening file");
exit(1);
}
printf("enter the record no to be read");
scanf("%d",&n);
fseek(fp,(n-1)*sizeof(emp),0);
freed(&emp,sizeof(emp),1,fp);
printf("%s\t,emp.name);
printf("%d\t",emp.age);
printf("%f\n",emp.sal);
fclose(fp);
getch();
};
| Previous | Home | Next |