Question: I had a project to complete in Linux. My instructor gave us hints on the project in C++, and I completed the progject in C++.
I had a project to complete in Linux. My instructor gave us hints on the project in C++, and I completed the progject in C++. I now nne my code converted to Lunix bash script, ASAP.
Here is my code:
#include
struct emp { int id; char *name; }*emp1, *emp3;
void display(); void create(); void update();
FILE *fp, *fp1; int count = 0;
void main(int argc, char **argv) { int i, n, ch;
printf("1] Create a Record "); printf("2] Display Records "); printf("3] Update Records "); printf("4] Exit"); while (1) { printf(" Enter your choice : "); scanf("%d", &ch); switch (ch) { case 1: fp = fopen(argv[1], "a"); create(); break; case 2: fp1 = fopen(argv[1],"rb"); display(); break; case 3: fp1 = fopen(argv[1], "r+"); update(); break; case 4: exit(0); } } }
/* To create an employee record */ void create() { int i; char *p;
emp1 = (struct emp *)malloc(sizeof(struct emp)); emp1->name = (char *)malloc((size)*(sizeof(char))); printf("Enter name of employee : "); scanf(" %[^ ]s", emp1->name); printf("Enter emp id : "); scanf(" %d", &emp1->id); fwrite(&emp1->id, sizeof(emp1->id), 1, fp); fwrite(emp1->name, size, 1, fp); count++; // count to number of entries of records fclose(fp); }
/* Display the records in the file */ void display() { emp3=(struct emp *)malloc(1*sizeof(struct emp)); emp3->name=(char *)malloc(size*sizeof(char)); int i = 1;
if (fp1 == NULL) printf(" File not opened for reading"); while (i <= count) { fread(&emp3->id, sizeof(emp3->id), 1, fp1); fread(emp3->name, size, 1, fp1); printf(" %d %s",emp3->id,emp3->name); i++; } fclose(fp1); free(emp3->name); free(emp3); }
void update() { int id, flag = 0, i = 1; char s[size];
if (fp1 == NULL) { printf("File cant be opened"); return; } printf("Enter employee id to update : "); scanf("%d", &id); emp3 = (struct emp *)malloc(1*sizeof(struct emp)); emp3->name=(char *)malloc(size*sizeof(char)); while(i<=count) { fread(&emp3->id, sizeof(emp3->id), 1, fp1); fread(emp3->name,size,1,fp1); if (id == emp3->id) { printf("Enter new name of emplyee to update : "); scanf(" %[^ ]s", s); fseek(fp1, -204L, SEEK_CUR); fwrite(&emp3->id, sizeof(emp3->id), 1, fp1); fwrite(s, size, 1, fp1); flag = 1; break; } i++; } if (flag != 1) { printf("No employee record found"); flag = 0; } fclose(fp1); free(emp3->name); /* to free allocated memory */ free(emp3); }
It is runung as is, however need done in LUNIX.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
