Ввод и вывод массива структур - C (СИ)

Узнай цену своей работы

Формулировка задачи:

все вроде ничего, прога работает, но не получается вывести в консоль то, что нужно.. в размерности массива где-то я, наверное, плаваю.. Сделать нужно было с помощью библиотечных функций ввода-вывода. вот, собственно, само задание: "Создать программу, позволяющую вводить элементы массива структур (размерность массива не более 30 элементов), содержащие сведения о расписании поездов: день недели, станция назначения (название не более 20 символов, количество поездов до данной станции в день не более 5, количество станций не более 10), номер поезда и время отправления, и позволяющую по задаваемой станции назначения посмотреть сведения о соответствующих поездах: день недели, номер поезда и время отправления".
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. int main(){
  5. const int l_station = 20;
  6. struct Train {
  7. char day[l_station+1];
  8. char num[l_station+1];
  9. char station[l_station+1];
  10. char time[l_station+1];
  11. };
  12. const int l_dbase = 3;
  13. Train dbase[l_dbase];
  14. char station[l_station+1];
  15. FILE *fout;
  16. if ((fout = fopen("D:\dbase.txt", "w")) == NULL){
  17. puts("Oshibka\n");getch(); return 1; }
  18. for (int i=0; i<l_dbase; i++){
  19. scanf ("%s%s%s%s", &dbase[i].station, &dbase[i].day, &dbase[i].num, &dbase[i].time);
  20. fprintf(fout, "%s %s %s %s \n", dbase[i].station, dbase[i].day, dbase[i].num, dbase[i].time);
  21. }
  22. fclose (fout);
  23. fflush (stdin);
  24. FILE *fin;
  25. if ((fin = fopen("D:\dbase.txt", "r")) == NULL){
  26. puts("Oshibka\n");getch(); return 1; }
  27. int i = 0;
  28. while (!feof(fin)) {
  29. fgets(dbase[i].station, l_station, fin);
  30. fscanf(fin, "%s%s%s\n", &dbase[i].day, &dbase[i].num, &dbase[i].time);
  31. i++;
  32. if (i>l_dbase) {puts ("slishkom\n"); return 1;}}
  33. while (true) {
  34. puts("Enter station: ");
  35. gets(station);
  36. if (strlen(station) == 0)break;
  37. bool not_found = true;
  38. for (i = 0; i < l_dbase; i++) {
  39. if (strstr(dbase[i].station, station))
  40. if (dbase[i].station[strlen(station)] = ' ') {
  41. strcpy(station, dbase[i].station);
  42. printf("%s%s%s%s\n", station, dbase[i].day, dbase[i].num, dbase[i].time);
  43. not_found = false;}
  44. }
  45. if (not_found) puts("Netu\n");
  46. }
  47. fclose(fin);
  48. getch();
  49. return 0;
  50. }
Подскажите, пожалуйста, где у меня есть ошибки!! Буду очень благодарен

Решение задачи: «Ввод и вывод массива структур»

textual
Листинг программы
  1. if (dbase[i].station[strlen(station)] == ' ')

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут