Anci C

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>

#define MAX_NAME_LENGTH 50
#define MAX_GROUP_LENGTH 10
#define MAX_STUDENTS 100

typedef struct {
char last_name[MAX_NAME_LENGTH];
char first_name[MAX_NAME_LENGTH];
char group[MAX_GROUP_LENGTH];
float gpa;
} Student;

void read_student(Student* student) {


printf("Enter last name: ");
scanf("%s", student->last_name);
printf("Enter first name: ");
scanf("%s", student->first_name);
printf("Enter group: ");
scanf("%s", student->group);
printf("Enter GPA: ");
scanf("%f", &student->gpa);
}

void print_student(Student student) {


printf("Last name: %s\n", student.last_name);
printf("First name: %s\n", student.first_name);
printf("Group: %s\n", student.group);
printf("GPA: %.2f\n", student.gpa);
}

void read_students(Student students[], int n) {


for (int i = 0; i < n; i++) {
printf("Enter student %d:\n", i+1);
read_student(&students[i]);
}
}

void print_students(Student students[], int n) {


for (int i = 0; i < n; i++) {
printf("Student %d:\n", i+1);
print_student(students[i]);
}
}

void save_students_to_file(Student students[], int n, char* filename) {


FILE* fp = fopen(filename, "wb");
if (fp == NULL) {
printf("Error: cannot open file %s\n", filename);
exit(1);
}
fwrite(students, sizeof(Student), n, fp);
fclose(fp);
printf("Saved %d students to file %s\n", n, filename);
}

void load_students_from_file(Student students[], int n, char* filename) {


FILE* fp = fopen(filename, "rb");
if (fp == NULL) {
printf("Error: cannot open file %s\n", filename);
exit(1);
}
fread(students, sizeof(Student), n, fp);
fclose(fp);
printf("Loaded %d students from file %s\n", n, filename);
}

void print_student_by_index(char* filename) {


int index;
printf("Enter index of student to read: ");
scanf("%d", &index);
FILE* fp = fopen(filename, "rb");
if (fp == NULL) {
printf("Error: cannot open file %s\n", filename);
exit(1);
}
fseek(fp, index * sizeof(Student), SEEK_SET);
Student student;
fread(&student, sizeof(Student), 1, fp);
print_student(student);
fclose(fp);
}

void search_students_by_last_name(Student students[], int n, char* last_name) {


int found = 0;
for (int i = 0; i < n; i++) {
if (strcmp(students[i].last_name

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_LEN 50
#define MAX_STUDENTS 100

typedef struct {
char name[MAX_LEN];
char surname[MAX_LEN];
char patronymic[MAX_LEN];
char faculty[MAX_LEN];
char group[MAX_LEN];
int birth_day;
int birth_month;
int birth_year;
int id;
} Student;

void read_student(Student *student) {


printf("Enter student's information:\n");
printf("Name: ");
fgets(student->name, MAX_LEN, stdin);
printf("Surname: ");
fgets(student->surname, MAX_LEN, stdin);
printf("Patronymic: ");
fgets(student->patronymic, MAX_LEN, stdin);
printf("Faculty: ");
fgets(student->faculty, MAX_LEN, stdin);
printf("Group: ");
fgets(student->group, MAX_LEN, stdin);
printf("Birth date (DD/MM/YYYY): ");
scanf("%d/%d/%d", &student->birth_day, &student->birth_month, &student-
>birth_year);
printf("Student ID: ");
scanf("%d", &student->id);
getchar(); // consume '\n' after scanf
}

void print_student(Student student) {


printf("Student's information:\n");
printf("Name: %s", student.name);
printf("Surname: %s", student.surname);
printf("Patronymic: %s", student.patronymic);
printf("Faculty: %s", student.faculty);
printf("Group: %s", student.group);
printf("Birth date: %d/%d/%d\n", student.birth_day, student.birth_month,
student.birth_year);
printf("Student ID: %d\n", student.id);
}

void read_students(Student students[], int *num_students) {


printf("Enter the number of students: ");
scanf("%d", num_students);
getchar(); // consume '\n' after scanf
for (int i = 0; i < *num_students; i++) {
read_student(&students[i]);
}
}

void print_students(Student students[], int num_students) {


for (int i = 0; i < num_students; i++) {
printf("Student %d:\n", i+1);
print_student(students[i]);
printf("\n");
}
}

void write_students_to_file(Student students[], int num_students, char *filename) {


FILE *file = fopen(filename, "w");

You might also like