C Tutorial
This c program is used to learn how to do record operations using text file.
Lets see how to add a student mark record, delete a record, search a record and show all the records using text file.
/* Add, delete, search and show all student mark detail records */ #include<stdio.h> struct student { char name[30]; int id, mark; }; // adds student mark record void addrecord() { struct student stu; FILE *fp; char ch; fp = fopen("student_mark_list.txt", "a+"); printf("\nEnter student id: "); scanf("%d", &stu.id); printf("\nEnter student name: "); scanf(" %s", stu.name); printf("\nEnter student mark: "); scanf("%d", &stu.mark); fprintf(fp, "%d %s %d\n", stu.id, stu.name, stu.mark); fclose(fp); printf("\nStudent mark is written successfully!"); } // searches student mark record void showrecord() { struct student stu; FILE *fp; int id, status=0; fp = fopen("student_mark_list.txt", "a+"); if(fp == NULL) { printf("\nStudent mark list does not exists!"); } else { printf("\nEnter student id: "); scanf("%d", &id); printf("\nstudent id\tstudent name\t mark"); while(fscanf(fp, "%d %s %d\n", &stu.id, stu.name, &stu.mark)!=EOF) { if(id == stu.id) { printf("\n%d\t%s\t%d", stu.id,stu.name,stu.mark); status = 1; } } fclose(fp); } if(status == 0) { printf("\nStudent mark does not exists!"); } } // deletes student mark record void deleterecord() { struct student stu; FILE *fp, *fp_temp; int id, status=0; fp = fopen("student_mark_list.txt", "r+"); fp_temp = fopen("student_mark_list_temp.txt", "a+"); if(fp == NULL) { printf("\nStudent mark list does not exists!"); } else { printf("\nEnter student id: "); scanf("%d", &id); while(fscanf(fp, "%d %s %d\n", &stu.id, stu.name, &stu.mark)!=EOF) { if(id != stu.id) { fprintf(fp_temp, "%d %s %d\n", stu.id, stu.name, stu.mark); } else { status =1; } } if(status == 1) { printf("\nStudent mark detail is deleted for student id : %d", id); } fclose(fp); fclose(fp_temp); remove("student_mark_list.txt"); rename("student_mark_list_temp.txt", "student_mark_list.txt"); } } // show all the student mark records void showall() { struct student stu; FILE *fp; fp = fopen("student_mark_list.txt", "a+"); if(fp == NULL) { printf("\nStudent mark list does not exists!"); } else { printf("\nstudent id\tstudent name\t mark"); while(fscanf(fp, "%d %s %d\n", &stu.id, stu.name, &stu.mark)!=EOF) { printf("\n%d\t%s\t%d", stu.id,stu.name,stu.mark); } fclose(fp); } } void main() { struct student stu; int option; printf("\nstudent mark details\n-------------------"); do { printf("\n1 -> add record\n2 -> delete record\n3 -> show record\n4 -> show all\n5 -> exit"); printf("\nEnter option: "); scanf("%d", &option); switch(option) { case 1: addrecord(); break; case 2: deleterecord(); break; case 3: showrecord(); break; case 4: showall(); break; case 5: return; default: printf("\nInvalid option!"); } }while(1);; }
Output:
$ cc file-record-task.c $ ./a.out student mark details ------------------- 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 1 Enter student id: 1 Enter student name: student1 Enter student mark: 97 Student mark is written successfully! 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 1 Enter student id: 2 Enter student name: student1 Enter student mark: 76 Student mark is written successfully! 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 1 Enter student id: 3 Enter student name: student3 Enter student mark: 75 Student mark is written successfully! 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 4 student id student name mark 1 student1 97 2 student1 76 3 student3 75 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 3 Enter student id: 2 student id student name mark 2 student1 76 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 2 Enter student id: 2 Student mark detail is deleted for student id : 2 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 4 student id student name mark 1 student1 97 3 student3 75 1 -> add record 2 -> delete record 3 -> show record 4 -> show all 5 -> exit Enter option: 5 [jaganathan@dhcp35-211 cprog]$ cat student_mark_list.txt 1 student1 97 3 student3 75 $
If you look into the text file 'student_mark_list.txt' used in this program to hold the data of student mark details physically,
$ cat student_mark_list.txt 1 student1 97 3 student3 75
C Tutorial
Privacy Policy | Copyright2020 - All Rights Reserved. | Contact us
| Report website issues in Github
| Facebook page
| Google+ page