Thursday, June 28, 2012

File operation in ‘C’ - III



Example of Write, Read, modify and delete.

//Write, Read, modify and delete

#include <stdio.h>
#include <conio.h>
#include <string.h>

struct emp
      {
           char name[30];
           int days,wages,sal;
      }emp;

  void add()
      {
           FILE *fptr;
           fptr=fopen("emp.txt","w");
           printf("\n\tEmployee Name:");
           fflush(stdin);
           gets(emp.name);
           fflush(stdin);
           printf("\n\tDays Worked : ");
           scanf("%d",&emp.days);
           printf("\n\tWages : ");
           scanf("%d",&emp.wages);
           emp.sal=emp.days*emp.wages;
           fwrite(&emp,sizeof(emp),1,fptr);
           fclose(fptr);
      }

  void disp()
      {
           FILE *fptr;
           fptr=fopen("emp.txt","r");
           printf("\n\n\t Employee\t\t\tDays\tWage\tSalary");
           printf("\n\t   Name");
           printf("\n\t======================================================");
           while(fread(&emp,sizeof(emp),1,fptr)==1)
              {
                   printf("\n\t %-30s\t %d\t %d\t %d",emp.name,emp.days, emp.wages, emp.sal);
              }
           printf("\n\t======================================================");
      }
  void modify()
      {
           char name[20];
           FILE *fptr,*fptr1;
           int flag=0;
           fptr=fopen("emp.txt","r");
           fptr1=fopen("temp.txt","w");
           printf("\n\tEnter Employee Name to Modify: ");
           fflush(stdin);
           gets(name);
           fflush(stdin);
           while(fread(&emp,sizeof(emp),1,fptr)==1)
              {
                   if(stricmp(emp.name,name)==0)
                        {
                            flag=1;
                            printf("\n\tEnter New Days & Wage:");
                            scanf("%d%d",&emp.days,&emp.wages);
                            emp.sal=emp.days*emp.wages;
                        }
                   fwrite(&emp,sizeof(emp),1,fptr1);
              }
           if(flag==1)
              {
                   printf("\n\tThe Profile is Modified");
              }
           else
              {
                   printf("\n\tRecord is Not Found!!");
              }

           fclose(fptr);
           fclose(fptr1);
           remove("emp.txt");
           rename("temp.txt","emp.txt");
      }
  void del()
      {
           char name[20];
           FILE *fptr,*fptr1;
           int flag=0;
           fptr=fopen("emp.txt","r");
           fptr1=fopen("temp.txt","w");
           printf("\n\tEnter Employee Name to Delete : ");
           fflush(stdin);
           gets(name);
           fflush(stdin);
           while(fread(&emp,sizeof(emp),1,fptr)==1)
              {
                   if(stricmp(emp.name,name)!=0)
                        {
                            fwrite(&emp,sizeof(emp),1,fptr1);
                        }
                   else
                        {
                            flag=1;
                        }
              }
           if(flag==1)
              {
                   printf("\n\tThe Profile is Deleted");
              }
           else
              {
                   printf("\n\tRecord is Not Found!!");
              }
           fclose(fptr);
           fclose(fptr1);
           remove("emp.txt");
           rename("temp.txt","emp.txt");
      }

  void main()
      {
           int c=0;
           clrscr();
           while(c<5)
              {
                   printf("\n\n\t1. Add");
                   printf("\n\t2. Display");
                   printf("\n\t3. Delete");
                   printf("\n\t4. Modify");
                   printf("\n\t5. Exit");
                   printf("\n\tYour Choice : ");
                   scanf("%d",&c);
                   switch(c)
                        {
                            case 1:add();break;
                            case 2:disp();break;
                            case 3:del();break;
                            case 4:modify();break;
                        }
              }
           getch();
      }

No comments: