witam.
Mam takie pytanie:
normalnie jeśli wczytuje plik do zmiennej przez fstream to czyta go od lewej do prawej?
jeśli ustawie seekg na end to zacznie czytać od lewej do prawej?
jeśli nie to jak takie coś zrobić?
Nie czytasz od prawej do lewej, poniewaz po przeczytaniu znaku wskaznik pliku idzie w prawo(dalej!), chcesz sobie czytac odwrotnie to baw sie z kernelem i to zmien.
Jak chcesz miec odwrotnie te znaki w tablicy to zapisujesz do tablicy od tylu, a nie odwrotnie czytasz plik.
FILE *fp = fopen("plik", "r");
char tab[64]; int i;
for(i = 63; i >= 0; i--)
tab[i] = fgetc(fp);
fclose(fp);
Napisalem wyraznie, ze nie odczytasz od tylu, poniewaz tyle ile wczytasz bajtow o tyle idzie do przodu wskaznik, a nie do tylu :D Co do tego SEEK_END to po prostu ustawia wskaznik na koniec pliku, wiec mozesz jedynie odczytac EOF i nic, chyba ze bedziesz cofal wskaznik o jeden, ale to tez nie jest czytanie od tylu.
po prostu normalnie sie nie da.

- Rejestracja:ponad 18 lat
- Ostatnio:ponad 6 lat
lukasz: a czy to będzie czytanie pliku od tyłu? a czy nie to wlasnie zaproponowal tom-k dwa posty temu?
czytać plik od tyłu oczywiscie ze można! sposob jest banalny:
seek na ostatni bajt pliku
odczytaj bajt
seek na przedostatni bajt pliku
odczytaj bajt
seek na 2-gi od konca bajt pliku
odczytaj bajt
...
a więc: da się. ale czy to ma sens?
jesli nie ma sensu, to sadsad - napiszże co chcesz osiagnac, a nie jak-Ci-sie-wydaje-ze-powinienes
@up: to tez nie bedzie czytanie od tylu, no ale jakby nie bylo efekt ten sam, tylko po co wywolywac setki razy fseek i fread, badz inne odpowiedniki skoro mozna zrobic tak jak w przykladzie dalem
Zreszta jak autorowi zalezy tak bardzo na czytaniu takim to, np. na Linuksie, kernel mode i jazda z file_operations(tworzy sobie pseudo terminal i dziala, plik to plik co nie), badz tez modyfikacja kernela, ale tutaj nie pomoge, bo malo mnie do tej pory takie cos obchodzilo.
//q: to tez nie bedzie czytanie od tyłu, bo dane z dysku przychodza blokami 'do przodu' :)
Mozna tez zawsze zastapic funkcje odczytu z pliku swoja wlasna wersja ;p
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.