простые односвязные списки, работа с файлами

Мне необходимо поля из моих структур вывести в список и в файл. Однако не понимаю почему-то при втором вводе данных не считывается последнее поле 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);
}

Ответы (0 шт):