Till now we have read from a file and written to a file. But all operations were performed serially.Apart from just reading the records and writing them, we may need to process the records. It may be desirable to add new records to the file (either at the end or in between somewhere), delete existing records, and modify contents of existing records or to rearrange the record. The operations can be performed with ease if we can access the file at random.
We know that
fread, reads the record where the pointer is currently placed and advances pointer by one record. fwrite, writes the record where the pointer is currently placed.
We have a few functions which help us access the file records at random.
rewind (fpt) :-This function places the pointer to the beginning of the file irrespective of where it is present right now.
void rewind(FILE *fp);
ftell(fpt) = This function tells where the pointer is positioned right now. It returns this pointer as a long integer which is an offset from the beginning of the file. returns -1L on error
long ftell(FILE * fp);
fseek = This function lets us move the pointer from one record to another.
fseek(FILE *fp, long offset, int reference)
The first argument is the file pointer. Second argument is the offset which tells the compiler by how many bytes should the pointer be moved from a particular position. And the third argument is the reference from which the pointer should be offset. It can be
SEEK_END: move the pointer from end of file.
SEEK_CUR: move the pointer w.r.t. current position.
SEEK_SET: move the pointer w.r.t. beginning of file.
fseek return 0 if successful or nonzero on failure.
To move the pointer to previous record from its current position, we can use
fseek(fpt, -recsize, SEEEK_CUR);
(-recsize)moves the pointer back by recsize bytes from the current position
fseek(fpt, -recsize, SEEK_END);
This fseek would place the pointer beyond the last record in the file. 0 is the offset.
fgetpos = Gets current file pointer position.
int fgetpos(FILE * fp, fops_t *pos)
Position stored in *pos can be passed to fsetpos to set the file pointer. Returns 0 on success otherwise
fsetpos = Position the file pointer on file.
int fsetpos(FILE *fp, const_t *pos)
New position pointed to by pos is the value obtained by a previous call to fgetpos. On success return 0
on failure returns a nonzero value.
C Related Interview Questions
|DBMS Interview Questions||C++ Interview Questions|
|C & Data Structures Interview Questions||Java Interview Questions|
|Go (programming language) Interview Questions||F Sharp (programming language) Interview Questions|
|C preprocessor Interview Questions||R Programming language Interview Questions|
|D Programming Language Interview Questions||Lua (programming language) Interview Questions|
|Embedded C Interview Questions|
Introduction To C-programming
Data Types And Storage Classes
All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd
Wisdomjobs.com is one of the best job search sites in India.