Witam i witam ponownie.
W tym wykładzie chcę porozmawiać o pozycjonowaniu plików, w zasadzie o
niektórych funkcjach, które na to pozwolą aby zmienić położenie pliku.
Więc w przypadku wielu aplikacji idziesz potrzebować dostępu do danych w
pliku innym niż kolejność sekwencyjna.
Rozpoczyna się kolejność sekwencyjna na początku, a następnie
bajt po bajcie pod koniec.
To nie zawsze jest przydatne, ponieważ możesz chcieć wejść
do środka pliku i pobrać dane lub w koniec pliku i pobierz dane.
Wszystko zależy od aplikacji.
Nie zawsze chcesz iść od początku do końca.
Więc są różne funkcje których można użyć do uzyskania dostępu
do danych w kolejności losowej.
Istnieją dwa aspekty pozycjonowania plików.
Jednym z nich jest ustalenie, gdzie jesteś znajdują się w pliku, a drugi jest
przenoszony do danego punktu w pliku.
To są naprawdę dwie rzeczy chcesz się dowiedzieć,
kiedy mówisz o plikach i pozycjonowaniu pliku plik, na co faktycznie wskazuje.
Ponownie, gdzie jesteś w pliku i czy chcesz przenieść gdzieś
indziej w pliku.
Możesz więc uzyskać dostęp do pliku pod adresem losowa pozycja niezależnie od tego,
czy otworzysz plik, możesz przenieść swojego partnera pliku.
Nie musisz otwierać pliku plik, aby zmienić, gdzie masz
zmienić, zobaczyć, gdzie jesteś.
Więc dowiedz się, gdzie jesteś będziemy rozmawiać o pierwszej.
Masz dwie funkcje do znalezienia gdzie jesteś w pliku jeden.
Nazywa się ftel, a jeden jest zwany fgetpos, pozycja fget.
Dla ftell, rzeczywista funkcja definicja jest dość prosta.
Wracasz razem i bierzesz wskaźnik pliku.
I ta funkcja przyjmie wskaźnik pliku jako argument i
zwróci długą liczbę całkowitą wartość, która określa pozycję znaku w pliku,
więc tak jest powiem ci o pozycji.
Możesz go użyć, tworząc plik zmienna w tym przypadku fpos, która zmierza do tego, co
otrzyma zwrócony, a następnie przekazując wskaźnik do
tego pliku i wywołując ftel.
Zmienna pozycji f jest teraz zachowana aktualną pozycję w pliku i
możesz go użyć, aby powrócić do pliku pozycję w dowolnym późniejszym czasie.
Więc zwróci ci pozycję.
To jest sposób, w jaki możesz zdobyć położenie bieżącego
punktu, na który wskazujesz.
Wartość to przesunięcie w bajtach od początku pliku.
Więc to bardzo proste użyj passa w swoim wskaźniku, który powróci
i powie ci, gdzie jesteś znajdują się w twoim pliku w zasadzie
od początku pliku do ile bajtów od początku.
W tym przykładzie tworzymy wskaźnik pliku o nazwie fp i tworzymy liczbę
całkowitą o nazwie length.
Otworzymy plik, a to tylko do czytania.
Zrobimy pewnie, że nie jest zerowe.
Jeśli tak, jedziemy aby zwrócić błąd.
A potem nie martw się o fseek.
Fseek właściwie właśnie trwa aby przejść na koniec pliku.
To kolejna funkcja, która nam pomaga.
Używam go tylko do zademonstrować ftel.
Fseek dojdzie do końca pliku, a następnie
powiesz ftell fp i gotowe aby powiedzieć, że w zasadzie będziesz na
końcu pliku.
Więc odsyłacz, który został zwrócony znajduje się na końcu pliku.
A więc to, co się wydarzy zwróci
całkowity rozmiar pliku na podstawie długości ponieważ faktycznie przesunąłeś swój wskaźnik na koniec,
a potem ty powiedział, gdzie jestem, i powiedział, że jesteś na
końcu, więc wróć koniec.
A koniec to liczba bajtów od ostatniego czytania.
Spójrzmy więc na to w środku naszego ładnego IDE nasze bloki kodu.
Oto nasz przykład kodowania gdzie tworzymy nasz wskaźnik pliku.
Ustawiliśmy go na null, make pewnie, że nie jest zerowe.
Próbujemy to otworzyć.
A potem robimy fseek, który jest sprawiedliwy zamierzamy zmienić nasz wskaźnik pliku.
Ftel nam powie gdzie wskazujemy.
Więc będzie wskazywać na plik koniec i będzie to dowolna
liczba bajtów do końca.
Kiedy to uruchomimy, co zamierzasz zauważyć, że wyświetla 24 bajty.
Oznacza to, że jesteś na końcu plik, ponieważ jest to mały plik, a
plik zawiera tylko 24 bajty.
Zwykle będziesz używać ftel po pisałeś lub czytałeś, albo
już to zrobiłeś fseek, gdzie się gdzieś przeprowadziłeś.
Ale dzwonienie do ftel jest bardzo proste za pomocą wskaźnika pliku, a następnie
len po prostu powie ci, gdzie jesteś.
Możesz także użyć pliku fget position lub fgetpos.
I to jest druga funkcja dostarczanie informacji o aktualnej
pozycji pliku.
To trochę więcej skomplikowane niż ftel.
Zwraca liczbę całkowitą.
Pobiera wskaźnik pliku i to przyjmuje również typ t pozycji f.
Więc pierwszy parametr to ten wskaźnik pliku, więc wiesz,
do którego pliku chcesz przeczytać.
Drugi parametr to wskaźnik do pliku typ zdefiniowany w standardio. godz.
Typ pozycji f jest w stanie zapisz każdą pozycję w pliku.
Więc funkcja pozycji fget jest przeznaczony do
użytku, gdy funkcja pozycjonowania fset position.
Więc używasz pozycji fset i wtedy używasz pozycji fget w
połączeniu z tym.
Więc funkcja pozycji fget przechowuje bieżącą pozycję i informacje
o stanie pliku dla pliku and position
i zwraca zero, jeśli operacja się powiedzie, zwraca a niezerowa wartość całkowita niepowodzenia.
Możesz więc utworzyć plik zmienna typu pozycji s.
A tutaj mówimy, że jest właśnie tutaj.
Następnie nazywamy pozycję fget.
Określamy w naszym wskaźniku pliku, a określamy w naszym typie pozycji f.
Musimy przekazać znak ampersand, the adres, ponieważ nie jest wskaźnikiem.
Więc w tym przypadku obecny pozycja pliku znajduje się w
zmiennej hello lub tutaj.
Musisz więc zadeklarować zmienną typu f pozycja t, ponieważ to
właśnie przekazujesz w swoim parametr, twój drugi parametr.
Możesz zadeklarować wskaźnik pliku wpisz f pozycję t gwiazda, ponieważ
nie będzie żadnych wspomnień związane z przechowywaniem danych pozycji.
Spójrzmy więc na przykład będzie to miało dużo więcej sensu.
W tym przypadku tworzymy nasz plik wskaźnik, tworzymy naszą pozycję
typu posiadanego, nazywamy otwartą a potem nazywamy pozycję fget.
I przekazujemy nasz plik wskaźnik w naszej pozycji końcowej.
Więc to jest miejsce, w którym jesteśmy zapamiętanie pozycji.
Dostaniemy miejsce, w którym się znajdujemy.
Wtedy kiedy powiemy f put s, zapisujemy pewne dane,
gdziekolwiek się przeprowadzamy.
Więc ponownie, f uzyskaj pozycję i ftell powie ci, gdzie chcesz pisać
lub czytać.
Jest gdzieś pośrodku.
To nie jest na początku, to nie koniec.
Poruszasz się.
Zwykle będziesz się poruszać, szukając lub twój ruch czymś innym, zdobądź
pozycję i to mówi ci, gdzie jesteś.
Więc fget pozycja i ftell jest powiem ci dokładnie, gdzie wskazujesz, i
to oznacza, że możesz przenieść się gdzie indziej i będziesz
mógł czytać.
Teraz ustawiając pozycję w do tego momentu, po prostu
czytamy, gdzie się znajdujemy.
Tak naprawdę nie będziemy czytać w miejscu, w którym jesteśmy,
chyba że coś ustawiliśmy, czytaliśmy i zapisywaliśmy.
Więc jako uzupełnienie ftell, masz też fseek.
I fseek na to pozwoli przenieść się gdzieś na swoje stanowisko.
Zwraca int.
Zwraca wskaźnik pliku, długi fset i oryginał będący liczbą całkowitą.
Pierwszym parametrem jest wskaźnik do pliku, który przenosisz.
Drugi i trzeci parametr określają gdzie chcesz przejść w pliku.
Drugi parametr to odsunięcie, gdzie punkt odniesienia
określony przez trzeci parametr.
Punktem odniesienia może być jeden trzech wartości określonych
przez wstępnie zdefiniowane nazwy.
Szukaj zestawu, szukaj prądu i końca.
Zestaw wyszukiwania definiuje początek pliku.
Seek cur definiuje prąd pozycja w pliku, a szukanie
końca definiuje koniec pliku.
W przypadku pliku w trybie tekstowym drugi argument musi być wartością
zwracaną przez ftel.
Powinieneś więc zauważyć, że przy fseek i ftel, są używane razem.
A więc trzeci argument dotyczący tekstu Pliki trybu muszą być ustawione.
W przypadku plików tekstowych wszystkie operacje z fseek są wykonywane w odniesieniu
do początku file dla plików binarnych, o których tak naprawdę
niewiele się nauczyliśmy.
Ale w przypadku plików binarnych rozszerzenie argument offset to po
prostu względna liczba bajtów.
Możesz więc zaopatrzyć dodatnie lub ujemne wartości
przesunięcia, gdy odniesienie punkt jest określony jako seek cur.
Spójrzmy więc na przykład.
Tutaj, w tym przykładzie, znowu robimy fputs.
Więc zapisujemy dane do naszego plik, a następnie używamy fseek.
Fseek cię poruszy.
Tutaj to mówi, że jesteś przeniesiemy siedem bajtów i użyjemy zestawu
seek, aby powiedzieć, że chcemy przenieść gdzieś w zasadzie siedem
bajtów od początku.
I możemy przejść z początek pliku o siedem
bajtów, co spowoduje jego przeniesienie.
Po siedmiu bajtach możemy wtedy faktycznie zapisuj w nim dane.
I my też bylibyśmy w stanie użyj ftell, aby zobaczyć, że po
siedmiu bajtach, gdzie jesteśmy.
Możesz użyć tych informacji do odzyskać z miejsca, w którym jesteś.
Ponownie, cały sens fseek a fgets jest to, że albo widzisz, gdzie
się znajdujesz, aby określić gdzie chcesz pisać lub czytać.
Więc fseek s faktycznie będzie przesunąć pozycję, tell powie ci,
gdzie się znajdujesz.
Pozycja Fset jest również podobna do fseek.
Ale pozycja fset to trochę bardziej skomplikowane.
Będzie pasować do pozycji fset.
Więc fset get get position też jest bardzo podobne do pozycji fset.
Z pozycją fset, to określa pierwszy parametr jako wskaźnik
do otwartego pliku.
Drugi parametr to a wskaźnik typu f pozycja t.
Zapisana pozycja pod adresem został uzyskany
przez zawarcie pozycji fget.
Więc pozycja fset ma twój plik wskaźnik, a następnie aktualną zmienną.
A zmienna tutaj była wcześniej ustawione przez wywołanie pozycji fget.
Ponownie, będziesz używać fset i fget razem.
Pozycja fset zwraca a niezerowa wartość w przypadku błędu lub zero w
przypadku pomyślnego zakończenia.
Ta funkcja została zaprojektowana do pracy z wartością
zwracaną przez pozycję fget.
Możesz więc użyć go tylko, aby dostać się do numer w pliku, aby uzyskać miejsce w pliku,
w którym byłeś wcześniej.
Fseek pozwala przejść do dowolnego po prostu określając
odpowiednie przesunięcie.
Więc tutaj wyglądamy, jak mamy nasza pozycja typu t pozycja.
Otwieramy nasz plik i wtedy nazywamy pozycję fget.
W pozycji fget określamy gdzie chcemy przesunąć
wskaźnik, gdzie właściwie jesteśmy czytanie lub zapisywanie w pliku.
Następnie używamy fputs do gdziekolwiek to przenieśliśmy.
A potem pozycja fset będzie ponownie ustaw coś konkretnego, gdzie chcemy
pisać, a następnie napisz to z dowolnego miejsca.
Przy wszystkich tych funkcjach chcesz faktycznie zobaczyć, gdzie
wskazujesz.
Stanie się to o wiele łatwiejsze zrozumiemy, kiedy staniemy przed wyzwaniem.
Więc jeśli chodzi o czytanie i pisanie, ty zawsze chcesz przenieść się gdzieś do
punktu, do którego piszesz.
Nie zawsze chcesz pisać na początek lub na koniec.
A więc te funkcje są bardzo przydatne do przenoszenia w
dowolne miejsce w pliku.
Dziękuję Ci