Rozmiar pliku tekstowego (ANSI C)

0

Jak odczytać rozmiar pliku tekstowego lub ustawić wskaźnik odczytu na koniec?
Próbowałem czegoś takiego:

FILE *sl;
long Max;

sl = fopen(Plik, "rt");
if (fseek(sl, 0, SEEK_END)==0)
Max = ftell(sl);

Niestety wiecznie zwraca mi 0 :(

0

drugi argument fopen ma być a+ , wtedy jak nie ma danego pliku to go tworzy , a jak jest to zaczyna pisać na końcu , nie naruszając tego co było wcześniej w pliku , ustawia wskaźnik na końcu pliku

0

drugi argument fopen ma być a+ , wtedy jak nie ma danego pliku to go tworzy , a jak jest to zaczyna pisać na końcu , nie naruszając tego co było wcześniej w pliku , ustawia wskaźnik na końcu pliku

Nie chodzi mi o dopisywanie na końcu. Potrzebny jest mi rozmiar pliku oraz możliwość ustawiania wskaźnika w dowolnym miejscu.
Słyszałeś kiedyś może o takiej głupocie, jak wyszukiwanie binarne na pliku tekstowym? To właśnie takie coś mam zrobić.
Do tego potrzebuję rozmiaru pliku. Ale nawet ten kod przykładowy co jest w helpie BorlandC przy fseek nie działa. Czy to może być wina systemu (XP)?
A i nie mogę użyć uchwytów :(

0

Nie chodzi mi o dopisywanie na końcu. Potrzebny jest mi rozmiar pliku oraz możliwość ustawiania wskaźnika w dowolnym miejscu.

rozmiar pliku otrzymasz otwierając go , przechodzac po nim i za każdym wywołaniem fgetc zwiększając jakąś zmienną , jak będzie koniec pliku to jego rozmiar jest równy tej zmiennej , a co do wskaźnika to na pewno jest coś o tym w helpie , nie bawiłem sie tym , ale słyszalem o tym

Słyszałeś kiedyś może o takiej głupocie, jak wyszukiwanie binarne na pliku tekstowym?

nie , może ma to związek z plikami binarnymi ( zdefiniowanymi )

0

rozmiar pliku otrzymasz otwierając go , przechodzac po nim i za każdym wywołaniem fgetc zwiększając jakąś zmienną , jak będzie koniec pliku to jego rozmiar jest równy tej zmiennej , a co do wskaźnika to na pewno jest coś o tym w helpie , nie bawiłem sie tym , ale słyszalem o tym

Takie sprawdzanie to i tak niewiele da. A nawet jeżeli bym to wykorzystał, to potrzebna mi jest możliwość ustawienia tego wskaźnika w dowolnym miejscu pliku, a to nie działa.

Słyszałeś kiedyś może o takiej głupocie, jak wyszukiwanie binarne na pliku tekstowym?

nie , może ma to związek z plikami binarnymi ( zdefiniowanymi ) </quote>
Hehe. Akurat nie. Wyszukiwanie binarne stosuje się np. na posortowanej tablicy. Strzelasz w środek przeziału i porównujesz znajdującą się tam wartość z szukaną. Jeżeli jest mniejsza to szukasz tylko w górnej połowie nowo wyznaczonego przedziału. Jeżeli mniejsze to w lewej. W ten sposób musisz użyć jedynie log2n porównań.
Bardzo skuteczny mechanizm, ale nie na plikach :) Do plików należy odwoływać się sekwencyjnie, gdyż szybciej jest odczytać cały blok niż skakać po pliku. Ale to nie mój wymysł.

0

Wyszukiwanie binarne stosuje się np. na posortowanej tablicy. Strzelasz w środek przeziału i porównujesz znajdującą się tam wartość z szukaną. Jeżeli jest mniejsza to szukasz tylko w górnej połowie nowo wyznaczonego przedziału. Jeżeli mniejsze to w lewej. W ten sposób musisz użyć jedynie log2n porównań.

Qrde , Ale ze mnie ciota . Niedość , że miałem to na Algorytmach i Strukturach Danych Rok Temu to do tego wszystkiego napisałem 2 wersje tego algorytmu wyszukiwania kilka dni temu , tak dla poćwiczenia [glowa] [glowa] [glowa] :) . [glowa]

Bardzo skuteczny mechanizm, ale nie na plikach Do plików należy odwoływać się sekwencyjnie, gdyż szybciej jest odczytać cały blok niż skakać po pliku. Ale to nie mój wymysł.

Masz racje , że to bezsens , lepiej wczytać tą tablice do pamięci i operować na niej niż skakać po pliku bo będzie wolniej . Chyba , że plik jest extremalnie duży .

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