Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2020, 23:43   #1
Artemii21
Пользователь
 
Регистрация: 04.04.2020
Сообщений: 26
Восклицание Простые односвязные списки, работа с файлами

Мне необходимо поля из моих структур вывести в список и в файл. Однако не понимаю почему-то при втором вводе данных не считывается последнее поле scanf("%i",&c->a.bilet.classs)Вместо значения введенных мест выводится мусор. Также на экран выводится посторонняя информация, из-за которой летит вся структура списка. Подскажите, пожалуйста, в чем проблема.

Код:
#include<stdio.h>
#include<conio.h>

struct cena {
  float price;
  char classs[10];
};
struct tip {
  char name[50];
  int kolvo_mest;
};
struct aeroport {
  struct tip samolet;
  struct cena bilet;
  char vzlet[80];
  char posadka[80];
};
struct nod {
  struct aeroport a;
  nod * next;
};
nod * p, * u;
int n;
void newstr() {
  nod * c;
  if (!p) {
    p = new nod;
    printf("\n FROM, DESTINATION, FLIGHT, Nr.OF SEATS, PRICE, CLASS:\n");;
    scanf("%s", & p - > a.vzlet);
    scanf("%s", & p - > a.posadka);
    scanf("%s", & p - > a.samolet.name);
    scanf("%s", & p - > a.samolet.kolvo_mest);
    scanf("%f", & p - > a.bilet.price);
    scanf("%i", & p - > a.bilet.classs);
    u = p;
  } else {
    c = new nod;
    printf("Needed information:\n");
    scanf("%s", & c - > a.vzlet);
    scanf("%s", & c - > a.posadka);
    scanf("%s", & c - > a.samolet.name);
    scanf("%s", & c - > a.samolet.kolvo_mest);
    scanf("%f", & c - > a.bilet.price);
    scanf("%i", & c - > a.bilet.classs);
    u - > next = c;
    u = c;
  }
  u - > next = 0;
}
void output(FILE * f) {
  nod * c;
  c = p;
  rewind(f);
  while (c) {
    printf("\n%10s %10s %10s %10i %10.2f %10s", c - > a.vzlet, c - > a.posadka, c - > a.samolet.name, c - > a.samolet.kolvo_mest, c - > a.bilet.price, c - > a.bilet.classs);
    fprintf(f, "\n%10s %10s %10s %10i %6.2f %10s", c - > a.vzlet, c - > a.posadka, c - > a.samolet.name, c - > a.samolet.kolvo_mest, c - > a.bilet.price, c - > a.bilet.classs);
    c = c - > next;
  }
  printf("\n");
}
main() {
  FILE * f = fopen("bbb.txt", "r+");
  int n;
  printf("Enter number of flights= ");
  scanf("%i", & n);
  for (int i = 0; i < n; i++)
    newstr();
  printf("\n");
  output(f);
  rewind(f);
  while (!feof(f)) fputc(fgetc(f), stdout);
}
Изображения
Тип файла: jpg Снимок.JPG (15.4 Кб, 6 просмотров)
Artemii21 вне форума Ответить с цитированием
Старый 14.05.2020, 00:09   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Classs это массив символов, а не число.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Односвязные списки Rabbbit Общие вопросы C/C++ 0 13.03.2017 23:48
Односвязные списки на Си majuw Помощь студентам 2 08.09.2013 07:33
Односвязные списки в с++ fuzzyduzzy Помощь студентам 8 19.01.2013 00:10
Односвязные списки Nike0 Общие вопросы C/C++ 0 26.12.2010 12:07
Односвязные списки Anna T Паскаль, Turbo Pascal, PascalABC.NET 2 19.12.2010 18:58