Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C] Wczytywanie listy jednkierunkowej z pliku do pamięci

20 Jan 2012 23:46 1863 4
  • Level 12  
    Witam!

    Zrobiłem program z kilkunastoma funkcjami na liście jednokierunkowej. Wszystko ładnie pięknie działa. Wybrane funkcje np. dodawania wywołuję z odpowiednimi zmiennymi na sztywno. Następnie je zapisuję do pliku tekstowego. Teraz mam problem z wczytaniem ich z tegoż pliku. Proszę o rady.

    Zapisywanie mam tak:

    Code: c
    Log in, to see the code


    Na razie kombinuję na wszystkie możliwe sposoby. Jednak debugger pokazuje mi, że mam zły warunek w pętli. Nie wiem naprawdę jak wczytać strukturę do pamięci.

    Code: c
    Log in, to see the code


    Proszę o pomoc.
    [Szkolenie 22.06.2021, g.9.00] Zabezpieczenia Internetu Rzeczy (IoT) programowe i sprzętowe. Zarejestruj się za darmo
  • Level 23  
    Witam!
    definicja o *obecny = głowa występuje PO instrukcji wykonywalnej if ...
    W języku C zmienne wewnętrzne w funkcji lub w bloku powinny być zdefiniowane bądź zadeklarowane po otwierającym nawiasie klamrowym przed pierwszą instrukcją wykonywalną. Przemieszane z mogą być jedynie zmienne zewnętrzne z definicjami funkcji.

    Dodano po 6 [minuty]:

    Poza tym, w funkcji fprintf(...) wpisane są np
    &obecny->imię a powinno być: obecny->imię
  • Level 12  
    No właśnie ampersandy dodałem potem, bo pomyślałem, że przecież to scanf. Zmieniłem warunek w while i teraz przynajmniej się wysypuje program.
  • Level 23  
    Witam!

    Spróbuj może tak:
    zadeklaruj zmienną pomocniczą typu O (Nie wskaźnik!) np tak:

    O bufor;

    wypełnij ją funkcją

    fread(bufor, sizeof (O), 1, fp), (zamiast scanf)

    i operuj na polach "bufor"
  • Level 31  
    Proponuję zmienić podejście do problemu, tj nie uzależniać wczytywania danych od listy.
    Najpierw przeczytaj plik (pojedynczy element listy) do jakichś zmiennych albo obiektu (coś na kształt propozycji mojego poprzednika, choć przy samym fscanf mógłbyś zostać - obojętnie), a gdy już pobierzesz dane, ładuj je do listy. Proponuję aby funkcja operująca bezpośrednio na pliku nie była świadoma istnienia listy. Niech inna funkcja wywołuje funkcję pobierającą dane i steruje załadunkiem gotowych danych do listy.