Подключить файл в котором содержиться информация для структуры - C (СИ)
Формулировка задачи:
здраствуйте подскажите пожалуйста как подключить файл в котором содержиться информация для структуры например у меня есть структура
и вот надо с файла считать и вывести всех студентов и информацию о них .
как это сделать и как должна быть записана информация о студентах в файле?
заранее спасибо.
struct student
{
char name [30];
char surname [30];
int age;
double mark;
};Решение задачи: «Подключить файл в котором содержиться информация для структуры»
textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
struct Student{
char name [30];
char surname [30];
int age;
float mark;
};
void student_write(const char *, const struct Student *const, const size_t);
int main(void){
enum { MAX_NUM_STUD = 10 };
struct Student stud[MAX_NUM_STUD];
size_t num_stud = 0;
for (int i = 0; i < MAX_NUM_STUD; ++i){
printf("student %d ****************\n", i+1);
printf("Enter name: "); scanf("%s", stud[i].name);
printf("Enter surname: "); scanf("%s", stud[i].surname);
printf("Enter age: "); scanf("%d", &stud[i].age);
printf("Enter mark: "); scanf("%f", &stud[i].mark);
++num_stud;
int br;
printf("break(yes: 1, no: 0): "); scanf("%d", &br);
if (br) break;
}
student_write("students", stud, num_stud);
return EXIT_SUCCESS;
}
void student_write(const char *filename, const struct Student *const stud, const size_t size){
FILE *f = fopen(filename, "wb");
if(!f){
perror("File error");
exit(EXIT_FAILURE);
}
fwrite(stud, sizeof(*stud), size, f);
fclose(f);
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
<stdlib.h>для функцийmalloc,freeиexit,<stdio.h>для работы с файлами и вывода в консоль.
- Определяем структуру Student:
- В структуре Student определены поля для имени, фамилии, возраста и оценки.
- Используется тип
enumдля определения максимального количества студентов.
- Функция
student_write:- Открывает файл с помощью
fopenс параметромwb(для записи в двоичном формате). - Проверяет, открылся ли файл успешно, и если нет, выводит сообщение об ошибке и завершает программу.
- Использует функцию
fwriteдля записи данных из массива студентов в файл. - Закрывает файл с помощью
fclose.
- Открывает файл с помощью
- В функции main:
- Создаем массив
studтипаstruct Studentдля хранения информации о студентах. - Инициализируем переменную
num_studдля отслеживания количества заполненных записей. - Используем цикл
forдля получения информации о каждом студенте. - Выводим сообщение с номером студента и запрашиваем информацию о имени, фамилии, возрасте и оценке.
- Используем функцию
scanfдля считывания данных и сохраняем их в соответствующих полях структуры Student. - Увеличиваем счетчик
num_studпосле каждого заполненного студента. - Запрашиваем у пользователя ввод
breakдля завершения ввода данных (1 - да, 0 - нет). - После заполнения всех студентов, вызываем функцию
student_writeдля записи данных в файл. - Завершаем программу с помощью
return EXIT_SUCCESS.
- Создаем массив