Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, выполнить задание по своему варианту.
Структура имеет вид: фамилия, пол, год рождения и рост. Вывести данные о самом высоком спортсмене.
c
struct athlete {
char surname[50];
char gender[10];
int year_of_birth;
float height;
};
Данная структура содержит четыре поля: фамилия (строка до 50 символов), пол (строка до 10 символов), год рождения (целое число) и рост (вещественное число).
Для создания файла из 10 структур и записи информации в файл будем использовать следующий код:
c
#include <stdio.h>
struct athlete {
char surname[50];
char gender[10];
int year_of_birth;
float height;
};
int main() {
int i;
struct athlete athletes[10];
// Заполняем структуры данными
for(i=0; i<10; i++) {
printf("Введите информацию о спортсмене %d:n", i+1);
printf("Фамилия: ");
scanf("%s", athletes[i].surname);
printf("Пол: ");
scanf("%s", athletes[i].gender);
printf("Год рождения: ");
scanf("%d", &athletes[i].year_of_birth);
printf("Рост: ");
scanf("%f", &athletes[i].height);
}
// Записываем данные в файл
FILE *file = fopen("athletes.txt", "wb");
fwrite(athletes, sizeof(struct athlete), 10, file);
fclose(file);
printf("Файл athletes.txt создан и данные успешно записаны.n");
return 0;
}
В этом коде мы создаем массив структур `athletes` и заполняем его данными пользователем. Затем открываем файл `athletes.txt` в бинарном режиме записи (`wb`) и записываем данные массива `athletes` в файл с помощью функции `fwrite`. После этого закрываем файл.
Чтобы просмотреть данные из файла, добавить новую информацию в файл и найти самого высокого спортсмена, воспользуемся следующим кодом:
c
#include <stdio.h>
struct athlete {
char surname[50];
char gender[10];
int year_of_birth;
float height;
};
int main() {
int i;
struct athlete athletes[10];
// Открываем файл и считываем данные в массив athletes
FILE *file = fopen("athletes.txt", "rb");
fread(athletes, sizeof(struct athlete), 10, file);
fclose(file);
// Просмотр данных спортсменов
printf("Содержимое файла athletes.txt:n");
for(i=0; i<10; i++) {
printf("Спортсмен %d:n", i+1);
printf("Фамилия: %sn", athletes[i].surname);
printf("Пол: %sn", athletes[i].gender);
printf("Год рождения: %dn", athletes[i].year_of_birth);
printf("Рост: %.2fn", athletes[i].height);
printf("n");
}
// Добавляем новую информацию в файл
struct athlete new_athlete;
printf("Введите информацию о новом спортсмене:n");
printf("Фамилия: ");
scanf("%s", new_athlete.surname);
printf("Пол: ");
scanf("%s", new_athlete.gender);
printf("Год рождения: ");
scanf("%d", &new_athlete.year_of_birth);
printf("Рост: ");
scanf("%f", &new_athlete.height);
file = fopen("athletes.txt", "ab");
fwrite(&new_athlete, sizeof(struct athlete), 1, file);
fclose(file);
printf("Файл athletes.txt успешно обновлен.n");
// Находим самого высокого спортсмена
struct athlete tallest = athletes[0];
for(i=1; i<11; i++) {
if (athletes[i].height > tallest.height) {
tallest = athletes[i];
}
}
printf("Самый высокий спортсмен:n");
printf("Фамилия: %sn", tallest.surname);
printf("Пол: %sn", tallest.gender);
printf("Год рождения: %dn", tallest.year_of_birth);
printf("Рост: %.2fn", tallest.height);
return 0;
}
В этом коде мы сначала открываем файл `athletes.txt` в бинарном режиме чтения (`rb`) и считываем данные из файла в массив `athletes` с помощью функции `fread`. Затем выводим содержимое массива `athletes` на экран.
После этого запрашиваем у пользователя данные о новом спортсмене, записываем эти данные в файл с помощью функции `fwrite` и закрываем файл.
Для поиска самого высокого спортсмена мы сравниваем рост каждого спортсмена с ростом текущего самого высокого спортсмена и, если рост текущего спортсмена больше, обновляем данные о самом высоком спортсмене. В конце выводим информацию о самом высоком спортсмене на экран.
Таким образом, данный код позволяет создать файл из 10 структур, просмотреть файл, добавить новую информацию и найти самого высокого спортсмена.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет