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