Ввод и вывод массива структур - 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)] == ' ')

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5