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 :(
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 :(
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
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 :(
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 )
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ł.
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 .