/* * C Program to Update Details of Employee using Files */ #include #include #include struct emp { int empid; char *name; }; int count = 0; void add_rec(char *a); void display(char *a); void update_rec(char *a); void main(int argc, char *argv[]) { int choice; while (1) { printf("MENU:\n"); printf("1.Add a record\n"); printf("2.Display the file\n"); printf("3.Update the record\n"); printf("Enter your choice:"); scanf("%d", &choice); switch(choice) { case 1: add_rec(argv[1]); break; case 2: display(argv[1]); break; case 3: update_rec(argv[1]); break; case 4: exit(0); default: printf("Wrong choice!!!\nEnter the correct choice\n"); } } } void add_rec(char *a) { FILE *fp; fp = fopen(a, "a+"); struct emp *temp = (struct emp *)malloc(sizeof(struct emp)); temp->name = (char *)malloc(50*sizeof(char)); if (fp == NULL) printf("Error!!!"); else { printf("Enter the employee id\n"); scanf("%d", &temp->empid); fwrite(&temp->empid, sizeof(int), 1, fp); printf("enter the employee name\n"); scanf(" %[^\n]s", temp->name); fwrite(temp->name, 50, 1, fp); count++; } fclose(fp); free(temp); free(temp->name); } void display(char *a) { FILE *fp; char ch; int rec = count; fp = fopen(a, "r"); struct emp *temp = (struct emp *)malloc(sizeof(struct emp)); temp->name = (char *)malloc(50*sizeof(char)); if (fp == NULL) printf("Error!!"); else { while (rec) { fread(&temp->empid, sizeof(int), 1, fp); printf("%d", temp->empid); fread(temp->name, 50, 1, fp); printf(" %s\n", temp->name); rec--; } } fclose(fp); free(temp); free(temp->name); } void update_rec(char *a) { FILE *fp; char ch, name[5]; int rec, id, c; fp = fopen(a, "r+"); struct emp *temp = (struct emp *)malloc(sizeof(struct emp)); temp->name = (char *)malloc(50*sizeof(char)); printf("Enter the employee id to update:\n"); scanf("%d", &id); fseek(fp, 0, 0); rec = count; while (rec) { fread(&temp->empid, sizeof(int), 1, fp); printf("%d", temp->empid); if (id == temp->empid) { printf("Enter the employee name to be updated"); scanf(" %[^\n]s", name); c = fwrite(name, 50, 1, fp); break; } fread(temp->name, 50, 1, fp); rec--; } if (c == 1) printf("Record updated\n"); else printf("Update not successful\n"); fclose(fp); free(temp); free(temp->name); }