Wczytywanie całego wiersza do tablicy [C] - Potrzebny pomysł :D

0

Witajcie forumowicz, mam pewien problem. Mianowicie muszę napisać program, który odczytuje sobie jakiś tekst z pliku, a następnie sortuje jego wiersze alfabetycznie, czyli np.

dane.txt
Heniu ma dwa koty i psa
Zenon liże guzik
Alina ciężko pracuje w kopalni :)

i ma to zapisać w takiej postaci

wynik.txt
Alina ciężko pracuje w kopalni :)
Heniu ma dwa koty i psa
Zenon liże guzik

I teraz moje pytanie, jak się za to zabrać. Chodzi mi bardziej o pomysł niż o kod. Da się cały jeden wierz zapisać w jednym rekordzie tabeli ?

Przykładowo:
w tab[0] - 1 wiersz
w tab[1] - 2 wiersz
w tab[2] - 3 wiersz
...

Wiem tylko tyle, że w jednym wierszu jest max 100 znaków, a liczba wierszy jest nieokreślona.

A jak np. zapiszę cały jeden wiersz w całej tablicy, gdzie jeden rekord to jedna literka, to jak to wtedy posortować i dać mu znać, że ma zapisywać przykładowo w innej tabeli , jeżeli przejdzie do następnego wiersza ?

Tylko wtedy muszę posiadać tyle tabel co wierszy ?

Jak macie jakieś pomysły, byłbym wdzięczny :)

1

Chcesz mieć tablicę na maksymalnie 100 znakowe napisy? Poskładaj sobie taką:

Najpierw potrzebujemy jakoś określić co to będzie ta linia:

typedef char line_t[101];

W takim elemencie zmieści się 100 znaków oraz znak końca c-stringa.

Teraz chcemy tablicę nieokreślonego rozmiaru na takie linijki:

line_t *array;

Oczywiście jeszcze nie ma żadnej tablicy. To tylko definicja sposobu w jaki będziemy się do niej odwoływać.

Następnie trzeba jakoś zliczyć liczbę wierszy w pliku, zaalokować pamięć i wczytać poszczególne linie do tablicy. To metoda zupełnie wprost i z całą pewnością jest więcej innych. Zauważ, że jeżeli linie będą krótsze niż 100 znaków zmarnujesz pamięć - to cena za prostotę, bo nie musisz się przejmować alokacją pamięci na każdą linijkę z osobna.

Do sortowania masz funkcje qsort, do porównywania napisów strcmp.

Pomysł już masz, teraz zabierz się do pisania.

0

No i właśnie nie wiem jak te wiersze policzyć. Zliczać te znaki końca i z tego wywnioskować ile jest wierszy ?

1

musisz zczytywać z pliku znak po znaku i sprawdzać czy nie jest to "\n". Jeśli jest to zwiększasz licznik o 1. Zakładając iż w pliku musi wystąpić conajmniej jedna linijka liczenie zaczynasz od "1" nie od "zera". Albo zresztą tutaj masz linka http://www.elektroda.pl/rtvforum/topic1241284.html

0

Próbowałem, znalazłem jak obliczyć rozmiar pliku, najgorsze, że nawet nie za bardzo wiem jak tego szukać. Wiem, że macie pomóc, dlatego nie proszę o kod, a o wskazówki.

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