Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #define MAKS_NAZWA_PLIKU 32
- #include <stdio.h>
- #include <stdlib.h>
- struct student {
- int nr_indeksu;
- char nazwisko[30];
- float ocena;
- struct student *nastepny;
- };
- int main()
- {
- //wczytywanie pliku z danymi
- FILE *plik_wejsciowy;
- char nazwa_pliku_wejsciowego[MAKS_NAZWA_PLIKU];
- printf("Podaj nazwe pliku wejsciowego:\n\n");
- scanf("%s", nazwa_pliku_wejsciowego);
- plik_wejsciowy = fopen(nazwa_pliku_wejsciowego, "r");
- if (plik_wejsciowy == NULL)
- {
- printf("\n\nBlad otwierania pliku.\n");
- exit(0);
- }
- else
- printf("\n\nPlik wejsciowy zostal otwarty pomyslnie.\n");
- //tworzenie listy dynamicznej jednokierunkowej i wczytywanie danych
- struct student *pierwszy_element_listy = NULL;
- struct student *pomocniczy;
- printf("\n\nDane wczytane z pliku:\n\n");
- while (feof(plik_wejsciowy) == 0)
- {
- //tworzenie pierwszego elementu listy
- if (pierwszy_element_listy == NULL)
- {
- pierwszy_element_listy = pomocniczy = (struct student*)malloc(sizeof(struct student));
- }
- //tworzenie kolejnych elementow listy
- else
- {
- pomocniczy->nastepny = (struct student*)malloc(sizeof(struct student));
- pomocniczy = pomocniczy->nastepny;
- }
- //wczytywanie danych z pliku do listy dynamicznej
- fscanf(plik_wejsciowy, "%d %s %f", &pomocniczy->nr_indeksu, pomocniczy->nazwisko, &pomocniczy->ocena);
- //wypisywanie wczytanego rekordu na ekranie
- printf("%d %s %.1f\n", pomocniczy->nr_indeksu, pomocniczy->nazwisko, pomocniczy->ocena);
- pomocniczy->nastepny = NULL;
- }
- //zamykanie pliku wejsciowego
- if (fclose(plik_wejsciowy))
- {
- printf("\n\nBlad podczas zamykania pliku. Koniec programu.\n");
- //zwalnianie pamieci
- pomocniczy = pierwszy_element_listy;
- while (pomocniczy != NULL)
- {
- pierwszy_element_listy = pomocniczy;
- pomocniczy = pierwszy_element_listy->nastepny;
- free(pierwszy_element_listy);
- }
- exit(0);
- }
- else
- printf("\n\nPlik wejsciowy zostal zamkniety pomyslnie.\n");
- //odwracanie kolejnosci listy dynamicznej
- if (pierwszy_element_listy == NULL)
- printf("\n\nLista nie zawiera zadnych elementow.\n");
- else
- {
- pomocniczy = pierwszy_element_listy;
- while (pomocniczy->nastepny != NULL)
- {
- struct student *pomocniczy_nastepny;
- pomocniczy_nastepny = pomocniczy->nastepny;
- pomocniczy->nastepny = pomocniczy_nastepny->nastepny;
- pomocniczy_nastepny->nastepny = pierwszy_element_listy;
- pierwszy_element_listy = pomocniczy_nastepny;
- }
- }
- //wypisanie odwroconej listy dynamicznej w oknie konsoli
- printf("\n\nDane z listy jednokierunkowej w odwrotnej kolejnosci:\n\n");
- pomocniczy = pierwszy_element_listy;
- while (pomocniczy != NULL)
- {
- printf("%d %s %.1f\n", pomocniczy->nr_indeksu, pomocniczy->nazwisko, pomocniczy->ocena);
- pomocniczy = pomocniczy->nastepny;
- }
- //wczytywanie pliku do zapisu
- FILE *plik_wyjsciowy;
- char nazwa_pliku_wyjsciowego[MAKS_NAZWA_PLIKU];
- printf("\n\nPodaj nazwe pliku wyjsciowego:\n\n");
- scanf("%s", nazwa_pliku_wyjsciowego);
- plik_wyjsciowy = fopen(nazwa_pliku_wyjsciowego, "w");
- if (plik_wyjsciowy == NULL)
- {
- printf("\n\nBlad podczas otwierania pliku wyjsciowego. Koniec programu.\n");
- //zwalnianie pamieci
- pomocniczy = pierwszy_element_listy;
- while (pomocniczy != NULL)
- {
- pierwszy_element_listy = pomocniczy;
- pomocniczy = pierwszy_element_listy->nastepny;
- free(pierwszy_element_listy);
- }
- exit(0);
- }
- else
- printf("\n\nPlik wyjsciowy zostal otwarty pomyslnie.\n");
- //zapisywanie danych z listy jednokierunkowej do pliku
- printf("\n\nZapisywanie danych do pliku...\n");
- pomocniczy = pierwszy_element_listy;
- while (pomocniczy != NULL)
- {
- fprintf(plik_wyjsciowy, "%d %s %.1f\n", pomocniczy->nr_indeksu, pomocniczy->nazwisko, pomocniczy->ocena);
- fflush(plik_wejsciowy);
- pomocniczy = pomocniczy->nastepny;
- }
- //zamykanie pliku wyjsciowego
- if (fclose(plik_wyjsciowy))
- {
- printf("\n\nBlad podczas zamykania pliku wyjsciowego Koniec programu.\n");
- //zwalnianie pamieci
- pomocniczy = pierwszy_element_listy;
- while (pomocniczy != NULL)
- {
- pierwszy_element_listy = pomocniczy;
- pomocniczy = pierwszy_element_listy->nastepny;
- free(pierwszy_element_listy);
- }
- exit(0);
- }
- else
- printf("\n\nPlik wyjsciowy zostal zamkniety pomyslnie.\n");
- //zwalnianie pamieci
- pomocniczy = pierwszy_element_listy;
- while (pomocniczy != NULL)
- {
- pierwszy_element_listy = pomocniczy;
- pomocniczy = pierwszy_element_listy->nastepny;
- free(pierwszy_element_listy);
- }
- //konczenie programu
- printf("\n\nKoniec programu.\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement