Ввод и вывод массива структур - C (СИ)
Формулировка задачи:
все вроде ничего, прога работает, но не получается вывести в консоль то, что нужно.. в размерности массива где-то я, наверное, плаваю..
Сделать нужно было с помощью библиотечных функций ввода-вывода.
вот, собственно, само задание:
"Создать программу, позволяющую вводить элементы массива структур (размерность массива не более 30 элементов), содержащие сведения о расписании поездов: день недели, станция назначения (название не более 20 символов, количество поездов до данной станции в день не более 5, количество станций не более 10), номер поезда и время отправления, и позволяющую по задаваемой станции назначения посмотреть сведения о соответствующих поездах: день недели, номер поезда и время отправления".
Подскажите, пожалуйста, где у меня есть ошибки!! Буду очень благодарен
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <conio.h>
- int main(){
- const int l_station = 20;
- struct Train {
- char day[l_station+1];
- char num[l_station+1];
- char station[l_station+1];
- char time[l_station+1];
- };
- const int l_dbase = 3;
- Train dbase[l_dbase];
- char station[l_station+1];
- FILE *fout;
- if ((fout = fopen("D:\dbase.txt", "w")) == NULL){
- puts("Oshibka\n");getch(); return 1; }
- for (int i=0; i<l_dbase; i++){
- scanf ("%s%s%s%s", &dbase[i].station, &dbase[i].day, &dbase[i].num, &dbase[i].time);
- fprintf(fout, "%s %s %s %s \n", dbase[i].station, dbase[i].day, dbase[i].num, dbase[i].time);
- }
- fclose (fout);
- fflush (stdin);
- FILE *fin;
- if ((fin = fopen("D:\dbase.txt", "r")) == NULL){
- puts("Oshibka\n");getch(); return 1; }
- int i = 0;
- while (!feof(fin)) {
- fgets(dbase[i].station, l_station, fin);
- fscanf(fin, "%s%s%s\n", &dbase[i].day, &dbase[i].num, &dbase[i].time);
- i++;
- if (i>l_dbase) {puts ("slishkom\n"); return 1;}}
- while (true) {
- puts("Enter station: ");
- gets(station);
- if (strlen(station) == 0)break;
- bool not_found = true;
- for (i = 0; i < l_dbase; i++) {
- if (strstr(dbase[i].station, station))
- if (dbase[i].station[strlen(station)] = ' ') {
- strcpy(station, dbase[i].station);
- printf("%s%s%s%s\n", station, dbase[i].day, dbase[i].num, dbase[i].time);
- not_found = false;}
- }
- if (not_found) puts("Netu\n");
- }
- fclose(fin);
- getch();
- return 0;
- }
Решение задачи: «Ввод и вывод массива структур»
textual
Листинг программы
- if (dbase[i].station[strlen(station)] == ' ')
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д