Код:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <malloc.h>
#include <string.h>
#include <Windows.h>
#include <stdlib.h>
#include <conio.h>
struct AEROFLOT {
char name[50]; // Название пункта
int number; // Номер рейса
char tip[20]; // Тип самолёта
int k1; // колличество занятых мест
int k2; // всего мест
};
int main(){
setlocale(LC_ALL, "Russian");
AEROFLOT* routes;
int razm;
int i = 0;
int r = 0;
int l = 0;
printf("Выберите сбособ заполнения, 1 если самостоятельно и 0, если прочитать из файла : \n");
scanf_s("%i", &r);
if (r == 1)
{
printf("Введите количество рейсов");
scanf_s("%d", &razm);
routes = (AEROFLOT*)malloc(razm * sizeof(AEROFLOT)); //выделение памяти
for (int i = 0; i < razm; i++){
printf("Название пункта назначения\n");
scanf("%s", routes[i].name);
printf("Номер рейса\n");
scanf_s("%i", &(routes[i].number));
printf("Тип самолёта\n");
scanf("%s", routes[i].tip);
printf("Колличество свободных мест\n");
scanf_s("%i", &(routes[i].k1));
printf("Колличество мест\n");
scanf_s("%i", &(routes[i].k2));
}
printf("Сохранить структуру в фаил? Если да нажмите 1, нет 0 \n");
scanf_s("%i", &l);
//flushall();
if (l == 1)
{
char z[60];
printf("\nВведите имя файла для сохранения: ");
scanf("%s", z);
//gets(z);
if (strchr(z, '.') == 0) strcat_s(z, ".txt"); //в имени ищем (.) и добовляем txt
FILE *f1 = fopen(z, "w");
if (f1 == 0)
{
fprintf(f1, "Ошибка открытия.\n");
return 0;
}
//запись в файл данных...
for (int i = 0; i < razm; i++)
{
fprintf(f1, "%d\nНазвание пункта назначения", routes[i].name);
fprintf(f1, "%d\nНомер", (routes[i].number));
fprintf(f1, "%s\nТип самолёта", routes[i].tip);
fprintf(f1, "%d\nКолличество свободных мест", (routes[i].k1));
fprintf(f1, "%d\nКолличество мест", (routes[i].k2));
fclose(f1);
return 0;
}
}
}
else
{
char v[80];
printf("Введите имя файла для чтения: \n");
scanf("%s", v);
FILE *f = fopen(v, "r");
if (f == 0){
puts("Ошибка открытия.\n");
return 0;
}
if (fscanf(f, "%i", &razm) != 0)
{
printf("Ошибка!");
return 1;
}
routes = (AEROFLOT*)malloc(razm * sizeof(AEROFLOT)); //выделение памяти
for (i = 0; i < razm; i++){
fscanf(f, "%s", routes[i].name);
fscanf(f, "%i", &routes[i].number);
fscanf(f, "%s", routes[i].tip);
fscanf(f, "%i", &routes[i].k1);
fscanf(f, "%i", &routes[i].k2);
}
}