Witam,
czy istnieje możliwość wczytywania lini pliku od końca?
Jesli tak, to czy istnieje jakaś optymalna metoda zgodna z ANSI C?
Z góry dziękuje za odpowiedź,
Pozdrawiam,
Gawler
Witam,
czy istnieje możliwość wczytywania lini pliku od końca?
Jesli tak, to czy istnieje jakaś optymalna metoda zgodna z ANSI C?
Z góry dziękuje za odpowiedź,
Pozdrawiam,
Gawler
char c;
while((c=getchar())!='\n')
{
/* tu kolejny znak wiersza */
}
Nie do końca o to mi chodziło.
Załóżmy, że mamy plik o następującej treści:
Abc
Cde
Efg
Ghi
Ijk
W jaki sposób napisać program, który wczyta kolejno następujące linie:
ljk
Ghi
Efg
Cde
Abc
Wczytać kolejne elementy z pliku do tablicy, a następnie wypisać je pętlą od końca.
Być może i jest to jakiś sposób, ale zauważ, że sprawdza się tylko i wyłącznie dla niewielkich danych.
Operuję na plikach sięgających po kilkaset mb, więc zapisywanie czegoś takiego do tablicy nie jest dobrym rozwiązaniem.
Witam
"Przejechać się" ( po otwarciu pliku ) na sam koniec tego pliku ( np. ftell ).
Odczytywać od końca "znak po znaku", przesuwając się o 1 bajt do przodu
( fseek ). Z odczytanych znaków budować łańcuch "tymczasowy" dopóty,
dopóki nie natrafi się na znak nowego wiersza, tj. na bajt o wartości 10.
Po natrafieniu na znak nowego wiersza odwrócić łańcuch tymczasowy, tj.
pierwszy "char" wpisać jako ostatni, a ostatni 'char' jako pierwszy.
Wystawić odwrócony łańcuch na wyjście ( stdout ) lub wpisać go do tablicy.
Po minięciu znaku ( znaków ) nowego wiersza rozpocząć wszystko od nowa.
Pozdrawiam
JK