Zapisywanie struktury w pliku

0

Witam serdecznie, walcze z zadaniem z C kilka dni i z nim poradzic, wiec zwracam sie z prosba o pomoc do Was. Piszemy projekt grupowy - program majacy obslugiwac parking. Podzielony jest on na 3 czesci, tryb menedzera, tryb dla osoby przy wejsciu i wyjsciu, etc, etc. Problem w tym, ze w trybie menedzerskim staram sie zapisywac/dodawac dane kont osob, ktore maja abonament na parkingu (co upowaznia ich do znizki lub przedplacenia), ale z kazdym nowym wpisem, stare ulegaja skasowaniu(?) i w pliku pozostaje tylko najnowszy wpis. Ciezko to mi inaczej wytlumaczyc.

Przyklad uzytej struktury:

#include <stdio.h>
#include <stdlib.h>
#define NOF_CUSTOMERS 100
#define STRING_SIZE 50
struct customer
{
	char forename[STRING_SIZE];
	char surname[STRING_SIZE];
	char address[STRING_SIZE];
	char plate_number[STRING_SIZE];
    	float balance;
};

Nie bede tutaj wstawial calego kodu, gdyz jest dosc dlugi, ale wrzuce go w zalaczniku.

PS. Przepraszam za brak polskich znakow, czy jezyk uzyty w programie, studiuje w Anglii, laptop brytyjski. ;)

0

Otwierasz plik w trybie "wb", dlatego jego zawartość jest kasowana. Aby dopisać dane do pliku używaj trybu "a" lub "ab"

0
struct {
    int a, b
} rekord = { .a = 10, .b = 20 };

FILE *out = fopen ("plik.dat", "wb"); // do dodawania "ab"
fwrite (&rekord, sizeof(rekord), 1, out);
fclose (out);
0

Uzycie "ab" dziala prawie dobrze, z naciskiem na prawie. Nie wiem dlaczego, ale przy zapisywaniu robiony jest odstep jednego wpisu miedzy kazdymi, tj. w index=0 zapisuje, index=1 - puste, index=2 - zapisuje, itd... Mam za zadanie stworzyc baze danych, wiec nie moge sobie pozwolic na zwiekszanie rozmiaru pliku pustymi wpisami, a ciezko mi sie rozeznac, co moze byc nie tak, szczegolnie, ze wartosci liczby wpisow i tym samym - wartosc "index" sa prawidlowe i prawidlowo podawane (przynajmniej tak mi sie wydaje).

1 użytkowników online, w tym zalogowanych: 0, gości: 1