Pobieranie danych z pliku tekstowego do tablicy

0

Witam.
mam pytanko
Jak pobrać dane z pliku tekstowego w którym w każdej linijce znajduje się maksymalnie 4 wyrazy oddzielone spacją? np:

Jeleń Pies Kot
Sowa Gołąb
Lis
Krowa Byk Świnia Kura
...

Jak widać, nie wiemy ile dokładnie jest wyrazów w każdej z linii.
Dane trzeba załadować do listy. W elementach tej listy jest tablica 2 wymiarowa typu char.

struct lista{
char tab[4][50];
struct lista *nast;
}

Każdy wiersz tablicy 2d musi zawierać 1 wyraz. Czyli np w pierwszym elemencie listy muszą być w tablicy w osobnych wierszach wyrazy z pierwszej linii, w 2 elemencie listy w tablicy w odzielnych wierszach wyrazy z 2 linii itd.
Jak można to zrobić?

0

Zakładam, że chcesz się czegoś nauczyć a nie dostać gotowy program. Spróbuj na podstawie poniższych wskazówek rozwiązać problem.

  1. Odczyt z pliku.
    https://www.codingunit.com/c-tutorial-file-io-using-text-files
  2. Wyciągniecie pojedynczego wyrazu.
    Czytaj plik linia po lini, linię podziel po spacjach i otrzymasz wyrazy w jednym wierszu.
    fgets i strtok.
  3. Dodanie do listy elementu z wyrazami z pierwszego wiersza
  4. Dodanie do listy n-tych elementów z n-tymi wierszami.
while (fgets(buf, 256, file) != NULL) {
    line = strtok(buf, "\n");
    word = strtok(line, " ");
    while (word != NULL) {
        // tutaj masz kazde slowo w lini
        if (row == 0)
            strcpy(first->tab[wordNumber], (const char*)word); // pierwszy element
        else
            AddToList(first, word, wordNum); // dodawanie do listy
        word = strtok(NULL, " ");
        wordNum++;
    }
    row++;
    wordNum = 0;
}

  1. Dodawanie elementów/Wyświetlanie listy:
    https://pl.wikibooks.org/wiki/C/Typy_z%C5%82o%C5%BCone
    http://www.learn-c.org/en/Linked_lists

  2. Powinieneś otrzymać listę gdzie w tabeli masz numer słowa w wierszu i to słowo.
    np.
    First->tab[0] będzie przechowywać wyraz "Jeleń"
    First->tab[1] będzie przechowywać wyraz "Pies"
    First->tab[0] będzie przechowywać wyraz "Kot"
    Kolejny_element->tab[0] będzie przechowywać wyraz "Sowa" i
    td.

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