Write a C program to create student database using files and structure.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* student structure */
struct student {
char name[32];
int age, rollNo;
int m1, m2, m3;
float average;
};
int main(int argc, char *argv[]) {
struct student s1;
int i, n, m1, m2, m3, age, flag, rollNo;
char name[32];
float average;
FILE *fp;
/* open the given input file in write mode */
fp = fopen(argv[1], "w");
/* get the number of students from the user */
printf("Enter the number of students:");
scanf("%d", &n);
Note:
./a.out studentDB.txt => passing file name(studentDB.txt) in command line.
#include <stdlib.h>
#include <string.h>
/* student structure */
struct student {
char name[32];
int age, rollNo;
int m1, m2, m3;
float average;
};
int main(int argc, char *argv[]) {
struct student s1;
int i, n, m1, m2, m3, age, flag, rollNo;
char name[32];
float average;
FILE *fp;
/* open the given input file in write mode */
fp = fopen(argv[1], "w");
/* get the number of students from the user */
printf("Enter the number of students:");
scanf("%d", &n);
/* get student information from user and write it to a file */
for (i = 0; i < n; i++) {
printf("\nEnter student %d details:\n", i + 1);
getchar();
printf("Name: ");
fgets(name, 32, stdin);
name[strlen(name) - 1] = '\0';
printf("Roll Number: ");
scanf("%d", &rollNo);
printf("Age: ");
scanf("%d", &age);
printf("Mark1, Mark2, Mark3:");
scanf("%d%d%d", &m1, &m2, &m3);
average = (1.0 * (m1 + m2 + m3)) / 3;
/* writing student information to a file */
fprintf(fp, "%d %s %d %d %d %d %f\n",
rollNo, name, age, m1, m2, m3, average);
}
/* closing the opened file */
fclose(fp);
/* opening the input file in read mode */
fp = fopen(argv[1], "r");
/*
* fetches the desired student record from
* file and displays it to the user
*/
while (1) {
printf("\nEnter the desired student roll number:");
scanf("%d", &rollNo);
flag = 0;
while (!feof(fp)) {
fscanf(fp, "%d %s %d %d %d %d %f", &s1.rollNo,
s1.name, &s1.age, &s1.m1, &s1.m2,
&s1.m3, &s1.average);
&s1.m3, &s1.average);
if (s1.rollNo == rollNo) {
printf("Details of %s:\n", s1.name);
printf("RollNo: %d\n", s1.rollNo);
printf("Age: %d\n", s1.age);
printf("Mark1: %d\n", s1.m1);
printf("Mark2: %d\n", s1.m2);
printf("Mark3: %d\n", s1.m3);
printf("Average: %f\n", s1.average);
flag = 1;
break;
}
}
if (!flag) {
printf("Record Not Found!!\n");
}
/* rewinding the file pointer to the start of file */
rewind(fp);
printf("Do you want to continue(1/0):");
scanf("%d", &flag);
if (!flag)
break;
}
/* closing the file */
fclose(fp);
return(0);
}
Note:
./a.out studentDB.txt => passing file name(studentDB.txt) in command line.
Output:
jp@jp-VirtualBox:~/$ ./a.out studentDB.txt
Enter the number of students:3
Enter student 1 details:
Name: Ram
Roll Number: 101
Age: 10
Mark1, Mark2, Mark3:100 100 100
Enter student 2 details:
Name: Sam
Roll Number: 102
Age: 10
Mark1, Mark2, Mark3:95 96 97
Enter student 3 details:
Name: Tom
Roll Number: 103
Age: 10
Mark1, Mark2, Mark3:95 97 99
Enter the desired student roll number:101
Details of Ram:
RollNo: 101
Age: 10
Mark1: 100
Mark2: 100
Mark3: 100
Average: 100.000000
Do you want to continue(1/0):1
Enter the desired student roll number:103
Details of Tom:
RollNo: 103
Age: 10
Mark1: 95
Mark2: 97
Mark3: 99
Average: 97.000000
Do you want to continue(1/0):0
jp@jp-VirtualBox:~/$ cat studentDB.txt
101 Ram 10 100 100 100 100.000000
102 Sam 10 95 96 97 96.000000
103 Tom 10 95 97 99 97.000000
Enter the number of students:3
Enter student 1 details:
Name: Ram
Roll Number: 101
Age: 10
Mark1, Mark2, Mark3:100 100 100
Enter student 2 details:
Name: Sam
Roll Number: 102
Age: 10
Mark1, Mark2, Mark3:95 96 97
Enter student 3 details:
Name: Tom
Roll Number: 103
Age: 10
Mark1, Mark2, Mark3:95 97 99
Enter the desired student roll number:101
Details of Ram:
RollNo: 101
Age: 10
Mark1: 100
Mark2: 100
Mark3: 100
Average: 100.000000
Do you want to continue(1/0):1
Enter the desired student roll number:103
Details of Tom:
RollNo: 103
Age: 10
Mark1: 95
Mark2: 97
Mark3: 99
Average: 97.000000
Do you want to continue(1/0):0
jp@jp-VirtualBox:~/$ cat studentDB.txt
101 Ram 10 100 100 100 100.000000
102 Sam 10 95 96 97 96.000000
103 Tom 10 95 97 99 97.000000
Can You please let me know from you.
ReplyDelete