Sie sind auf Seite 1von 5

C Program to Update Details of Employee using Files

This C Program Updates the Details of Employee using Files.


Here is source code of the C Program to Update Details of Employee using Files. The C
program is successfully compiled and run on a Linux system. The program output is also
shown below.
1. /*
2. * C Program to Update Details of Employee using Files
3. */
4. #include <stdio.h>
5. #include <stdlib.h>
6. #include <string.h>
7. struct emp
8. {
9. int empid;
10. char *name;
11. };
12.
13. int count = 0;
14. void add_rec(char *a);
15. void display(char *a);
16. void update_rec(char *a);
17.
18. void main(int argc, char *argv[])
19. {
20. int choice;
21. while (1)
22. {
23. printf("MENU:\n");
24. printf("1.Add a record\n");
25. printf("2.Display the file\n");
26. printf("3.Update the record\n");
27. printf("Enter your choice:");
28. scanf("%d", &choice);
29.
30. switch(choice)
31. {
32. case 1:
33. add_rec(argv[1]);
34. break;
35. case 2:
36. display(argv[1]);
37. break;
38. case 3:
39. update_rec(argv[1]);
40. break;
41. case 4:
42. exit(0);
43. default:
44. printf("Wrong choice!!!\nEnter the correct choice\n");
45. }
46. }
47. }
48.
49. void add_rec(char *a)
50. {
51. FILE *fp;
52. fp = fopen(a, "a+");
53. struct emp *temp = (struct emp *)malloc(sizeof(struct emp));
54. temp->name = (char *)malloc(50*sizeof(char));
55. if (fp == NULL)
56. printf("Error!!!");
57. else
58. {
59. printf("Enter the employee id\n");
60. scanf("%d", &temp->empid);
61. fwrite(&temp->empid, sizeof(int), 1, fp);
62. printf("enter the employee name\n");
63. scanf(" %[^\n]s", temp->name);
64. fwrite(temp->name, 50, 1, fp);
65. count++;
66. }
67. fclose(fp);
68. free(temp);
69. free(temp->name);
70. }
71.
72. void display(char *a)
73. {
74. FILE *fp;
75. char ch;
76. int rec = count;
77. fp = fopen(a, "r");
78. struct emp *temp = (struct emp *)malloc(sizeof(struct emp));
79. temp->name = (char *)malloc(50*sizeof(char));
80. if (fp == NULL)
81. printf("Error!!");
82. else
83. {
84. while (rec)
85. {
86. fread(&temp->empid, sizeof(int), 1, fp);
87. printf("%d", temp->empid);
88. fread(temp->name, 50, 1, fp);
89. printf(" %s\n", temp->name);
90. rec--;
91. }
92. }
93. fclose(fp);
94. free(temp);
95. free(temp->name);
96. }
97.
98. void update_rec(char *a)
99. {
100. FILE *fp;
101. char ch, name[5];
102. int rec, id, c;
103. fp = fopen(a, "r+");
104. struct emp *temp = (struct emp *)malloc(sizeof(struct emp));
105. temp->name = (char *)malloc(50*sizeof(char));
106. printf("Enter the employee id to update:\n");
107. scanf("%d", &id);
108. fseek(fp, 0, 0);
109. rec = count;
110. while (rec)
111. {
112. fread(&temp->empid, sizeof(int), 1, fp);
113. printf("%d", temp->empid);
114. if (id == temp->empid)
115. {
116. printf("Enter the employee name to be updated");
117. scanf(" %[^\n]s", name);
118. c = fwrite(name, 50, 1, fp);
119. break;
120. }
121. fread(temp->name, 50, 1, fp);
122. rec--;
123. }
124. if (c == 1)
125. printf("Record updated\n");
126. else
127. printf("Update not successful\n");
128. fclose(fp);
129. free(temp);
130. free(temp->name);
131. }
$ cc file5.c
$ a.out empl
MENU:
1.Add a record
2.Display the file
3.Update the record
Enter your choice:1
Enter the employee id
1
enter the employee name
aaa
MENU:
1.Add a record
2.Display the file
3.Update the record
Enter your choice:1
Enter the employee id
2
enter the employee name
bbb
MENU:
1.Add a record
2.Display the file
3.Update the record
Enter your choice:3
Enter the employee id to update:
1
1Enter the employee name to be updated1bc
Record updated
MENU:
1.Add a record
2.Display the file
3.Update the record
Enter your choice:2
1 1bc
2 bbb
MENU:
1.Add a record
2.Display the file
3.Update the record
Enter your choice:4

Das könnte Ihnen auch gefallen