Запись и считывание файла - выводится мусор - C (СИ)

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

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

Запись проходит нормально, но при чтении машина подтягивает мусор из оперативки, в чем проблема?
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys\stat.h>
  4. #include <io.h>
  5. #include <fcntl.h>
  6. #include <ctype.h>
  7. #include <windows.h>
  8. #include <string.h>
  9. struct train
  10. {
  11. char place[15];
  12. char num[15];
  13. char depTime[15];
  14. };
  15.  
  16. int main()
  17. {
  18. int i, c,a,b;
  19. train trains[5];
  20. train trains1[5];
  21. FILE *tPtr;
  22. FILE *t1Ptr;
  23. int f1 = 0;
  24. train swap;
  25. SetConsoleCP(1251);
  26. SetConsoleOutputCP(1251);
  27. tPtr = fopen("trains.dat", "w");
  28. if (tPtr == NULL)
  29. printf("open failed on input file\n");
  30. else
  31. {
  32. printf("Введіть дані про 5 потягів\n\n");
  33. for (i = 0; i < 5; i++)
  34. {
  35. printf("Пункт призначення потягу: ");
  36. scanf("%s", trains[i].place);
  37. printf("Введіть номер потягу: ");
  38. scanf("%s", trains[i].num);
  39. printf("Введіть час відправлення(в годинах): ");
  40. scanf("%s", trains[i].depTime);
  41. fprintf(tPtr, "%s %s %s\n", trains[i].place, trains[i].num, trains[i].depTime);
  42. }
  43. fclose(tPtr);
  44. }
  45. t1Ptr = fopen("trains.dat", "r");
  46. if (t1Ptr == NULL)
  47. perror("file cannot be open\n");
  48. else
  49. {
  50. for (i = 0; i < 5; i++)
  51. {
  52. fscanf(t1Ptr, "%s %s %s", &trains[i].place, &trains[i].num, &trains[i].depTime);
  53. if (feof(t1Ptr))
  54. break;
  55. }
  56. fclose(t1Ptr);
  57. }
  58. for (i = 0; i < 1; i++)
  59. {
  60. printf("%-10s\t", trains1[i].place);
  61. printf("%-10s\t", trains1[i].num);
  62. printf("%-10s\n", trains1[i].depTime);
  63. }
  64. printf("\n");
  65. system("pause");
  66. return 0;
  67. }

Решение задачи: «Запись и считывание файла - выводится мусор»

textual
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <windows.h>
  5.  
  6. typedef struct
  7. {
  8.     char place[15];
  9.     char num[15];
  10.     char depTime[15];
  11. }train;
  12.  
  13. int main()
  14. {
  15.     int i;
  16.     train trains[5];
  17.     train trains1;
  18.     FILE *tPtr;
  19.     FILE *t1Ptr;
  20.     int f1 = 0;
  21.  
  22.     SetConsoleCP(1251);
  23.     SetConsoleOutputCP(1251);
  24.  
  25.     tPtr = fopen("trains.dat", "w");
  26.     if (tPtr == NULL)
  27.         printf("open failed on input file\n");
  28.     else
  29.     {
  30.         printf("Введіть дані про 5 потягів\n\n");
  31.         for (i = 0; i < 5; i++)
  32.         {
  33.             printf("Пункт призначення потягу: ");
  34.             scanf("%s", trains[i].place);
  35.             printf("Введіть номер потягу: ");
  36.             scanf("%s", trains[i].num);
  37.             printf("Введіть час відправлення(в годинах): ");
  38.             scanf("%s", trains[i].depTime);
  39.             fprintf(tPtr, "%s %s %s\n", trains[i].place, trains[i].num, trains[i].depTime);
  40.         }
  41.         fclose(tPtr);
  42.     }
  43.  
  44.     puts("");
  45.  
  46.     t1Ptr = fopen("trains.dat", "r");
  47.     if (t1Ptr == NULL)
  48.         perror("file cannot be open\n");
  49.     else
  50.     {
  51.         while (!feof(t1Ptr))
  52.         {
  53.             fscanf(t1Ptr, "%s %s %s\n", trains1.place, trains1.num, trains1.depTime);
  54.             printf("Place: %s\tNum= %s\tdepTime= %s\n", trains1.place, trains1.num, trains1.depTime);
  55.         }
  56.         fclose(t1Ptr);
  57.     }
  58.  
  59.     puts("");
  60.     system("pause");
  61.     return 0;
  62. }

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


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

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

7   голосов , оценка 3.286 из 5

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

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

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