C Program to manipulate student mark detail records using text file

C program to add, delete, search a record or show all using text file

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 Program Examples

C program to cmpute matrix addition using two dimensional array

C program to cmpute matrix subtraction using two dimensional array

C program to cmpute matrix multiplication using two dimensional array

C program to compute different order of matrix multiplication

C program to generate identity matrix for required rows and columns

C program to validate whether matrix is identity matrix or not

C program to validate whether matrix is sparse matrix or not

C program to validate whether matrix is dense matrix or not

C program to generate string as matrix diagonal characters using two dimesional array

C Program to find number of weeks, months and years from days

C Program To Implement Linked List and Operations

C Program To Implement Sorted Linked List and Operations

C Program to Reverse the Linked List

C Program to Stack and Operations using Linked List

C Program to Queue and Operations using Linked List

C Program to calculate multiplication of two numbers using pointers

C Program To Calculate Median

C Program To Calculate Standard Deviation

C Program For Fahrenheit To Celsius Conversion

C Program To Calculate Average

C Program For Quadratic Equations

C Program To Check Character Type

C Program To Find Largest Of Three Values

C Program To Find Max Value In Array

C Program to Find Min Value In Array

C Program to Print Multiplication Table

C Program for Frequency Counting

C Program to read a line of text

C Program To Find ASCII Value For Any Character

C Program To Find A Character Is Number, Alphabet, Operator, or Special Character

C Program To Find Reverse Case For Any Alphhabet using ctype functions

C Program To Find Number Of Vowels In Input String

C Program Pointers Example Code

C Program To Find Leap Year Or Not

C Program To Swap Two Integers Using Call By Reference

C Program To Swap Two Integers Without Using Third Variable

C Program To List Prime Numbers Upto Limit

C Program To List Composite Numbers Upto Limit

C Program To Calculate Compound Interest

C Program To Calculate Depreciation Amount After of Before Few Years

C Program To Calculate Profit Percentage

C Program To Calculate Loss Percentage

C Program To Find String Is Polindrome Or Not

C Program To Find Factorial of a Number

C Program To Check Number is a Polindrome or Not

C Program To Generate Random Integers

C Program To Generate Random Float Numbers

C Program to find Square Root of a Number

C Program to find Area of a Rectangle

C Program to find Perimeter of a Rectangle

C Program to find Area of a Square

C Program to find Area of a Triangle

C Program to find Area of a Parallelogram

C Program to find Area of a Rhombus

C Program to find Area of a Trapezium

C Program to find Area of a Circle and Semi-circle

C Program to find Circumference of a Circle and Semi-circle

C Program to find length of an arc

C Program to find Area of a Sector

C Program to find string length for list of strings

C Program to find the character at index in a string

C Program to compare characters

C Program to find eligible to vote or not

C Program to get system current date and time on linux

C Program to get positive number

C Program to implement calculator

C Program to implement banking system

C Program to find sum of number

C Program for array traversal using pointers

C Program for array traversal in reverse order using pointers

C Program to find particular element occurrences count in array

C Program to find even elements occurrences count in array

C Program to find odd elements occurrences count in array

C program to find week day in word from week day in number using two dimentsional array

C program to find month in word from month in number using pointers

C program to compute PMT for a loan

C program to compute EMI and round up using floor

C program to compute EMI and round up using ceil

C program to compute the EMI table with Interest, Principal and Balance

C program to get multiple line of string

C program to find nth element in array using pointers

C program to compute the volume of a cube

C program to compute the volume of a box

C program to compute the volume of a sphere

C program to compute the volume of a triangular prism

C program to compute the volume of a cylinder

C Program to Compute Perimeter of Square

C Program to compute the perimeter of triangle

C Program to compute the discount rate

C Program to compute the sales tax

C program to add, delete, search a record or show all using binary file

C program to add, delete, search a record or show all using text file

Privacy Policy  |  Copyrightcopyright symbol2020 - All Rights Reserved.  |  Contact us   |  Report website issues in Github   |  Facebook page   |  Google+ page

Email Facebook Google LinkedIn Twitter
^