[C] Zapisywanie listy dwukierunkowej do pliku

W tym artykule przedstawię w jaki sposób zapisać listę dwukierunkową do pliku tektowego. Jest to bardzo przydatna operacja i wykorzystuje się ją na przykład podczas pisania prostej bazy danych. Struktura, na której będziemy bazować wygląda następująco:

//Struktura z danymi studenta
typedef struct DANE
{
	char* imie;
	char* nazwisko;
}Dane;

//Struktura z listą jednokierunkową
typedef struct STUDENT Student;
struct STUDENT
{
	Dane dane;
	Student* next;
	Student* prev;
};     

Pierwsza struktura składa się z pola imie oraz nazwisko, które są łańcuchami znaków. Natomiast struktura reprezentująca listę posiada pole z danymi ucznia, pole next(następny), które odnosi się do następnego elementu oraz pole prev(poprzedni), który odnosi się do poprzedniego elementu.

void zapisz_do_pliku(Student *head)
{
	FILE *zapisz = NULL;
	Student *tmp;
	char nazwa_pliku[] = "lista_studentow.txt";

	if (head == NULL)
		printf("Nie ma elementow do zapisania");
	else
	{
		zapisz = fopen(nazwa_pliku, "w");
		if (zapisz == NULL)
			printf("Blad otwarcia pliku");
		else
		{
			tmp = head;
			while (tmp != NULL)
			{
				fprintf(zapisz, "%s\n", tmp->dane.imie);
				fprintf(zapisz, "%s\n", tmp->dane.nazwisko);
				tmp = tmp->next;
			}
			printf("Lista zostala zapisana");
		}
		fclose(zapisz);
	}
}

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *