Jak odczytać strukturę z pliku

0

Witam Wszystkich!

Napisałem ten post gdyz potrzebuje pomocy. Mam napisać program który odczyta bazę danych samochodów. Mam plik bazy "auta.dat" i informacje ze każdy samochód opisany jest strukturą zawierającą pola:

  • marka - tablica znaków o rozmiarze 30;
  • model - tablica znaków o rozmiarze 30;
  • Numer rej. - tablica znaków o rozmiarze 30;
  • Rok - wartosc całkowita int;
  • Uwagi - tablica znaków o rozmiarze 30;
    Oraz ze na początku pliku znajduje sie wartosc int okreslająca ilosc struktur zapisanych w pliku. Nie bardzo wiem jak sie do tego zabrać gdyż dotychczas programowaniem zajmowałem się hobbystycznie w wolnych chwiach stąd prośba do was zawodowców. Szczególnie zastanawia mnie kwestia nazwy tej struktury. Jak ja odczytac z pliku? Czy to nie potrzebne?
    Proszę o jakies wskazówki w miarę zrozumieale. Z góry dziękuję za pomoc.
0
  1. Tworzysz odpowiednią strukturę struct Auto { ... };
  2. Otwierasz plik: fstream plik(...);
  3. wczytujesz ilość: plik.read(&Ile,sizeof(Ile));
  4. przydzielasz pamięć pod tablice stuktur: Auto *tb=new Auto[ile];
  5. wczytujesz: plik.read(Auto,Ile*sizeof(Auto));
  6. zamykasz plik: plik.close();
0

Dzieki za szybka odpowiedz jednak jest problem bo o ile poprawnie odczytuje mi ta pierwsza wartosc int to dalej nic nie działa. Nie za bardzo rozumiem do czego mam sie odwołac w tym pliku skoro nie znam nazw tych struktur jedynie nazwy pól. Na temat struktur jakotakich nie wiele znalazłem na forum chociaz przegladam je od momentu napisania tego pierwszego posta (jakies 4h). Gdyby ktos byl na tyle miły i pomógł by mi to złozyc do kupy to bede bardzo wdzieczny.

0

Wczytując dane bezpośrednio do struktury musisz pamiętać o wyrównaniu danych w pamięci. Czyli nie zapomnij o

__attribute__ ((packed)
  • GCC,
    w Visual studio było chyba
 
#pragma pack(push, 1)
//deklaracja struktury
#pragma pack(pop)

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