Подключить файл в котором содержиться информация для структуры - 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);
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы:
    • <stdlib.h> для функций malloc, free и exit,
    • <stdio.h> для работы с файлами и вывода в консоль.
  2. Определяем структуру Student:
    • В структуре Student определены поля для имени, фамилии, возраста и оценки.
    • Используется тип enum для определения максимального количества студентов.
  3. Функция student_write:
    • Открывает файл с помощью fopen с параметром wb (для записи в двоичном формате).
    • Проверяет, открылся ли файл успешно, и если нет, выводит сообщение об ошибке и завершает программу.
    • Использует функцию fwrite для записи данных из массива студентов в файл.
    • Закрывает файл с помощью fclose.
  4. В функции main:
    • Создаем массив stud типа struct Student для хранения информации о студентах.
    • Инициализируем переменную num_stud для отслеживания количества заполненных записей.
    • Используем цикл for для получения информации о каждом студенте.
    • Выводим сообщение с номером студента и запрашиваем информацию о имени, фамилии, возрасте и оценке.
    • Используем функцию scanf для считывания данных и сохраняем их в соответствующих полях структуры Student.
    • Увеличиваем счетчик num_stud после каждого заполненного студента.
    • Запрашиваем у пользователя ввод break для завершения ввода данных (1 - да, 0 - нет).
    • После заполнения всех студентов, вызываем функцию student_write для записи данных в файл.
    • Завершаем программу с помощью return EXIT_SUCCESS.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы