Подключить файл в котором содержиться информация для структуры - 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
.
- Создаем массив
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д