Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.56 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define MAKS_NAZWA_PLIKU 32
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. struct student {
  8.  
  9. int nr_indeksu;
  10. char nazwisko[30];
  11. float ocena;
  12. struct student *nastepny;
  13. };
  14.  
  15. int main()
  16. {
  17. //wczytywanie pliku z danymi
  18. FILE *plik_wejsciowy;
  19. char nazwa_pliku_wejsciowego[MAKS_NAZWA_PLIKU];
  20.  
  21. printf("Podaj nazwe pliku wejsciowego:\n\n");
  22. scanf("%s", nazwa_pliku_wejsciowego);
  23. plik_wejsciowy = fopen(nazwa_pliku_wejsciowego, "r");
  24. if (plik_wejsciowy == NULL)
  25. {
  26. printf("\n\nBlad otwierania pliku.\n");
  27. exit(0);
  28. }
  29. else
  30. printf("\n\nPlik wejsciowy zostal otwarty pomyslnie.\n");
  31.  
  32. //tworzenie listy dynamicznej jednokierunkowej i wczytywanie danych
  33. struct student *pierwszy_element_listy = NULL;
  34. struct student *pomocniczy;
  35.  
  36. printf("\n\nDane wczytane z pliku:\n\n");
  37. while (feof(plik_wejsciowy) == 0)
  38. {
  39. //tworzenie pierwszego elementu listy
  40. if (pierwszy_element_listy == NULL)
  41. {
  42. pierwszy_element_listy = pomocniczy = (struct student*)malloc(sizeof(struct student));
  43. }
  44. //tworzenie kolejnych elementow listy
  45. else
  46. {
  47. pomocniczy->nastepny = (struct student*)malloc(sizeof(struct student));
  48. pomocniczy = pomocniczy->nastepny;
  49. }
  50. //wczytywanie danych z pliku do listy dynamicznej
  51. fscanf(plik_wejsciowy, "%d %s %f", &pomocniczy->nr_indeksu, pomocniczy->nazwisko, &pomocniczy->ocena);
  52. //wypisywanie wczytanego rekordu na ekranie
  53. printf("%d %s %.1f\n", pomocniczy->nr_indeksu, pomocniczy->nazwisko, pomocniczy->ocena);
  54. pomocniczy->nastepny = NULL;
  55. }
  56.  
  57. //zamykanie pliku wejsciowego
  58. if (fclose(plik_wejsciowy))
  59. {
  60. printf("\n\nBlad podczas zamykania pliku. Koniec programu.\n");
  61. //zwalnianie pamieci
  62. pomocniczy = pierwszy_element_listy;
  63. while (pomocniczy != NULL)
  64. {
  65. pierwszy_element_listy = pomocniczy;
  66. pomocniczy = pierwszy_element_listy->nastepny;
  67. free(pierwszy_element_listy);
  68. }
  69. exit(0);
  70. }
  71. else
  72. printf("\n\nPlik wejsciowy zostal zamkniety pomyslnie.\n");
  73.  
  74. //odwracanie kolejnosci listy dynamicznej
  75. if (pierwszy_element_listy == NULL)
  76. printf("\n\nLista nie zawiera zadnych elementow.\n");
  77. else
  78. {
  79. pomocniczy = pierwszy_element_listy;
  80. while (pomocniczy->nastepny != NULL)
  81. {
  82. struct student *pomocniczy_nastepny;
  83. pomocniczy_nastepny = pomocniczy->nastepny;
  84. pomocniczy->nastepny = pomocniczy_nastepny->nastepny;
  85. pomocniczy_nastepny->nastepny = pierwszy_element_listy;
  86. pierwszy_element_listy = pomocniczy_nastepny;
  87. }
  88. }
  89.  
  90. //wypisanie odwroconej listy dynamicznej w oknie konsoli
  91. printf("\n\nDane z listy jednokierunkowej w odwrotnej kolejnosci:\n\n");
  92. pomocniczy = pierwszy_element_listy;
  93. while (pomocniczy != NULL)
  94. {
  95. printf("%d %s %.1f\n", pomocniczy->nr_indeksu, pomocniczy->nazwisko, pomocniczy->ocena);
  96. pomocniczy = pomocniczy->nastepny;
  97. }
  98.  
  99. //wczytywanie pliku do zapisu
  100. FILE *plik_wyjsciowy;
  101. char nazwa_pliku_wyjsciowego[MAKS_NAZWA_PLIKU];
  102.  
  103. printf("\n\nPodaj nazwe pliku wyjsciowego:\n\n");
  104. scanf("%s", nazwa_pliku_wyjsciowego);
  105. plik_wyjsciowy = fopen(nazwa_pliku_wyjsciowego, "w");
  106. if (plik_wyjsciowy == NULL)
  107. {
  108. printf("\n\nBlad podczas otwierania pliku wyjsciowego. Koniec programu.\n");
  109. //zwalnianie pamieci
  110. pomocniczy = pierwszy_element_listy;
  111. while (pomocniczy != NULL)
  112. {
  113. pierwszy_element_listy = pomocniczy;
  114. pomocniczy = pierwszy_element_listy->nastepny;
  115. free(pierwszy_element_listy);
  116. }
  117. exit(0);
  118. }
  119. else
  120. printf("\n\nPlik wyjsciowy zostal otwarty pomyslnie.\n");
  121.  
  122. //zapisywanie danych z listy jednokierunkowej do pliku
  123. printf("\n\nZapisywanie danych do pliku...\n");
  124. pomocniczy = pierwszy_element_listy;
  125. while (pomocniczy != NULL)
  126. {
  127. fprintf(plik_wyjsciowy, "%d %s %.1f\n", pomocniczy->nr_indeksu, pomocniczy->nazwisko, pomocniczy->ocena);
  128. fflush(plik_wejsciowy);
  129. pomocniczy = pomocniczy->nastepny;
  130. }
  131.  
  132. //zamykanie pliku wyjsciowego
  133. if (fclose(plik_wyjsciowy))
  134. {
  135. printf("\n\nBlad podczas zamykania pliku wyjsciowego Koniec programu.\n");
  136. //zwalnianie pamieci
  137. pomocniczy = pierwszy_element_listy;
  138. while (pomocniczy != NULL)
  139. {
  140. pierwszy_element_listy = pomocniczy;
  141. pomocniczy = pierwszy_element_listy->nastepny;
  142. free(pierwszy_element_listy);
  143. }
  144. exit(0);
  145. }
  146. else
  147. printf("\n\nPlik wyjsciowy zostal zamkniety pomyslnie.\n");
  148.  
  149. //zwalnianie pamieci
  150. pomocniczy = pierwszy_element_listy;
  151. while (pomocniczy != NULL)
  152. {
  153. pierwszy_element_listy = pomocniczy;
  154. pomocniczy = pierwszy_element_listy->nastepny;
  155. free(pierwszy_element_listy);
  156. }
  157.  
  158. //konczenie programu
  159. printf("\n\nKoniec programu.\n");
  160. return 0;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement