Jak zrobic taki myk (czytanie z pliku czysty C, rozne operacje)

0

Siema,
Jak zrobic taki myk, ze mam sobie pliczek, w którym tresc zalozmy ze wygloda tak:

nazwa_dania
skladnik1 jednostka ilosc_jednostek
skladnik2 jednostka ilosc_jednostek
skladnik3 jednostka ilosc_jednostek
...
Tresc przepisu....

i teraz tak, pobieram sobie ilosc wierszy w pliczku i chce zrobic takie cos:
przechodze sobie przez kazdy wiersz i jezeli:

  1. wiersz zawiera tylko i wylacznie nazwe dania to zapisuje go sobie tam gdzie chce (chodzi mi jak zrobic taki warunek)?
  2. wiersz zawiera skladnik1 jednostka ilosc_jednostek czyli %s%s%f to zapisuje go sobie gdzies gdzie chce(jak zrobic taki warunek)?
  3. jezeli napotkam na wiersz ktory posiada wiele wyrazow to zapisuje to tresc gdzie chce xD (warunek?)
    Moze troche chaotycznie, ale chodzi mi o to ze mam sobie jakis pliczek, w ktorym sa przepis/przepisy zgodnie z takim wzorem ktory ustalilem:
nazwa_dania
skladnik1 jednostka ilosc_jednostek
skladnik2 jednostka ilosc_jednostek
skladnik3 jednostka ilosc_jednostek
...
Tresc przepisu....

W jednym pliku moze byc kilka przepisow.
Chce zrobic tak zeby nazwa przepisu szla sobie do tab2[j].nazwa_dania
Skladniczki sobie szly do tablicy skladnikow, ktora jest lista jednokierunkowa
a tresc przepisu szla sobie do jakiejs tablicy znakow zalozmy o dlugosci 300. Troche zagmatwane, ale srednio to rozkminiam. Mysle, ze problemu bym nie mial gdyby w pliku byl tylko i wylacznie jeden przepis, a tutaj moze byc jeden badz kilka ;/

0

jezeli napotkam na wiersz ktory posiada wiele wyrazow to zapisuje to tresc gdzie chce xD

Co w tym zabawnego?


Najprościej będzie jeśli będziesz wczytywał plik linia po linii i sprawdzał liczbę spacji: zero spacji - nazwa dania, dwie - składnik. Najlepszym z kolei rozwiązaniem byłby lekser, ale zgaduję, że to wykracza poza zakres działu `newbie`, zatem trzymaj się powyższej idei.
0

@Patryk27
A jak wlasnie przejsc linijka po linicje, wlasnie w tym tez jest problem ;/
Potrafie przejsc przez caly plik czy odczytac liczbe linijek, ale nie rozumiem zabardzo na czym polega przechodzenie linijka po linijce?
Sprwadzenie liczby linijek w pliku:

char znak;
    int iloscwierszy=1;
    while((znak=getc(plik))!=EOF)
    {
        if(znak=='\n')
        {
            iloscwierszy++;
        }
    }
    fseek(plik, 0L, SEEK_SET);

Przejscie znak po znaku do konca pliku:

while((znak=getc(plik))!=EOF)
{

}
1

Pod jakimi hasłami w Google szukałeś rozwiązania tego problemu wczytywania linia po linii?

1

Odradzam takiego podejścia, lepiej zrób:

[Saciwi]
S1=Kurczak;1;kg
S2=Orzechy włoskie;25;dg
S3=Czosnek;1;główka
S4=Cebula (średnie);3;szt
S5=Pasta pomidorowa;0.25;l
S6=Chmeli-suneli;1;stołowa łyżka
S7=Pieprz czarny;;wg samku
S8=Sół;;wg samku
Opis1=Kurczaka pokroić w drobną kostkę
...
Opis5=Podawać na gorąco

Po czym odczytujesz standardowymi poleceniami dla pliku INI: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724875(v=vs.85).aspx (patrz od końca).

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