Zapis zawartosci pliku do struktury (czysty c)

0

Mam następujący problem, przechodze sobie znak po znaku przez plik i wykonuje następujące operacje:
1)Jeżeli napotkam znak "@" to:

if(znak=='@')
        {
            fscanf(plik, "%s", tab2[0].nazwa_dania);
        }

To działa bez problemów.
2)Jeżeli napotkam znak "$" to:

if(znak=='$')
        {
            fscanf(plik, "%s%s%f", tab2[0].tab1[0].nazwa_produktu, tab2[0].tab1[0].jednostka, tab2[0].tab1[0].liczba_jednostek);
        }

W podpunkcie 2) tkwi cały problem, gdyż program się wykłada, co robię nie tak? Dodam, że jeżeli robię bez "%f" to działa:

if(znak=='$')
        {
            fscanf(plik, "%s%s", tab2[0].tab1[0].nazwa_produktu, tab2[0].tab1[0].jednostka);
        }

Plik wygląda tak:
user image
A struktura tak:

struct przepisy{
    char nazwa_dania[30];
    produkt tab1[50];
};
typedef struct przepisy danie;

struct spizarka{
    char nazwa_produktu[30];
    char jednostka[30];
    float liczba_jednostek;
};
typedef struct spizarka produkt;

@Edit
Cały problem tkwi w tym, że nie chce mi zapisać tej liczby w tym przypadku '4' do tablicy struktur, ktos ma jakis pomysl jak to naprawic?

1

Zamień na %lf oraz double

0

Niestety to nie rozwiązało problemu, zmieniłem w strukturze z "float" na "double" i tutaj na %.1f lecz dalej ten sam problem.

1
... jednostka, 

&tab2[0].tab1[0].liczba_jednostek);

0

@_13th_Dragon
Bardzo Ci dziękuje gdy dodałem "&" zadziałało, w końcu po dwoch dniach różnych prób i wychodzenia z siebie, naprawde wielkie dzięki

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