Logo 
Search:

C Programming Articles

Submit Article
Home » Articles » C Programming » Homework HelpRSS Feeds

Example of file functions like fread(), fwrite(), fopen(), fclose() and fseek()

Posted By: Matilda Hughes     Category: C Programming     Views: 22473

Example of file functions like fread(), fwrite(), fopen(), fclose() and fseek().

Code for Example of file functions like fread(), fwrite(), fopen(), fclose() and fseek() in C Programming

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 50


typedef struct
        {
        char  name[10];
        int key;
      } file_record;

/* this function adds the relatiuve addres to the index for a key */
void create_index(long index[], int key, long rel_add ) { index[key] = rel_add; } /* this function writes a record to the file */
void write_rec(FILE *fp, file_record rec) { fwrite(&rec,sizeof(rec),1,fp); } void main() { long rel_add; int key; file_record frec; long index[MAX];/* an index list*/
int n,i; FILE *recfile=NULL,*ifile=NULL; /* this initializes the index list to all –1 */
for(i=0; i< MAX; i++) index[i]= (-1); recfile=fopen("mfile","w"); if(recfile == NULL) { printf("Error in openeing file mfile\n"); exit(0); } rel_add = 0 ; do { printf(" Enter the data vlue and the key of the record to be added to file mfile\n"); scanf("%s %d",frec.name,&frec.key); while(index[frec.key] != (-1)) { printf(" A record with this key value already exist in a file enter record key value\n"); scanf("%s %d",frec.name,&frec.key); } create_index(index,frec.key,rel_add); write_rec(recfile,frec); rel_add = ftell(recfile); /* this sets the relative address for the next record to be
the value of current file position pointer in bytes from
the beginning of the file */
printf("Enter 1 to continue adding records to the file\n"); scanf("%d",&n); }while(n == 1); ifile=fopen("index_file","w"); if(ifile == NULL) { printf("Error in openeing file index_file\n"); exit(0); } fwrite(index,sizeof(index),1,ifile);/*writes the complete index into the index_file */
fclose(recfile); fclose(ifile); printf("Enter 1 if you want to retrieve a record\n"); scanf("%d",&n); if( n == 1) { ifile=fopen("index_file","r"); if(ifile == NULL) { printf("Error in openeing file index_file\n"); exit(0); } fread(index,sizeof(index),1,ifile);/* reads the complete index into the index list
from the index_file*/
fclose(ifile); recfile=fopen("mfile","r"); if(recfile == NULL) { printf("Error in openeing file mfile\n"); exit(0); } } printf("THE CONTENTS OF FILE IS \n"); while( (fread(&frec,sizeof(frec),1,recfile)) != 0) printf("%s %d\n",frec.name,frec.key); do { printf("Enter the key of the record to be retrieved\n"); scanf("%d",&key); rel_add = index[key]; /*gets the relative address of the record from index list */
if( (fseek(recfile,rel_add,SEEK_SET))!= 0) { printf("Error\n"); exit(0); } fread(&frec,sizeof(frec),1,recfile); printf("The data value of the retrieved record is %s\n",frec.name); printf("Enter 1 if you want to retrieve a record\n"); scanf("%d",&n); } while(n == 1); fclose(recfile); }
  
Share: 



Matilda Hughes
Matilda Hughes author of Example of file functions like fread(), fwrite(), fopen(), fclose() and fseek() is from London, United Kingdom.
 
View All Articles

 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
No Comment Found, Be the First to post comment!