Witam i witam ponownie.
W tym wykładzie chcę podać pokaz naszego pierwszego
wyzwania związanego z odczytem z pliku.
Policzymy liczbę wiersze wewnątrz pliku przy użyciu fgetc.
Przywołajmy więc bloki kodu, i stwórzmy nasz projekt.
Tutaj, po prostu powiemy nowy projekt
i będzie to podstawowe dopasowanie do czytania.
Powiedzmy, że wybierz aplikację konsoli c, a tę podstawową lub liczącą liczbę wierszy
nazwiemy w jaki sposób o liczyć liczbę wierszy.
I tak to się stworzy nasz główny. c co jest dobre.
Jeszcze zanim zaczniemy tę aplikację jednak chcemy stworzyć nasz plik, który będzie
zawierał jakiś tekst.
Ponieważ nie piszemy, po prostu czytanie liczby wierszy.
Więc musisz wiedzieć, gdzie zapisałeś swój projekt.
Zapisuję swoje projekty w środku mojego katalogu pobierania.
A kiedy tworzysz nowy projekt w katalogu pobierania przechodzisz do
nazwy tego projektu.
Mój projekt to policzyć liczbę linii.
Więc liczba wewnętrzna linie, mam swoje główne. c plik.
Mogę stworzyć swój plik bezpośrednio w tym katalogu.
Więc po prostu mam rację kliknij wewnątrz katalogu
i powiem nowy i jestem zamierzam utworzyć plik tekstowy.
To jest nowy dokument tekstowy, i to będzie test. tekst.
Otworzę to.
Możesz otworzyć się w dowolnym redaktorze, to jest wordpad.
To się włączy niektóre linie, cześć.
To będzie testowanie księgowość, ok, tylko kilka linii, a potem ty
chcesz to zapisać i zamknąć.
Teraz, gdy mam utworzony plik, mogę faktycznie zacznij coś wdrażać.
Pierwsza rzecz, którą chcę zrobić Czy chcę utworzyć
stałą zmienną dla nazwy pliku.
Więc użyję tylko define.
To będzie reprezentować moją nazwę pliku.
Podam tylko nazwę pliku czapki, a to będzie równe
temu, co właśnie nazwałem, czyli znowu jest test. tekst, więc przetestuj. tekst.
I cały mój kod idzie być moją główną funkcją.
Chcę utworzyć wskaźnik pliku.
Pamiętaj, aby utworzyć wskaźnik pliku, po prostu używasz wielkich liter PLIK, a następnie mówisz gwiazdka
i możesz po prostu powiedzieć fp.
I ja to zrobię zainicjuj to na null.
Zawsze, gdy czytasz pliki i pisząc, musisz upewnić się, że dołączyłeś
standardową bibliotekę lib. godz.
Mam zamiar również stworzyć singiel postać, która będzie używana.
Powiem tylko char, a potem utworzę licznik dla
wszystkich moich linii.
Powiem, że liczba linii int.
I mam zamiar ustawić to na 0.
Pierwsza rzecz, którą musisz zrobić, kiedy robisz jakiekolwiek odczytywanie
z plików, musisz to otworzyć.
Więc funkcja f open jest zwróci wskaźnik pliku.
Więc chcę to przypisać do mojego fp i chcę
powiedzieć f open i nazwę pliku nazwa, którą już zdefiniowałem to
stała, nazwa pliku.
I chcę otworzyć się do czytania i tylko do czytania, więc po prostu powiem r.
Więc tutaj chcę zrobić fopen z moim nazwa pliku jako moja stała, a następnie r
w cudzysłowach, to nasz tryb.
Chcę tylko czytać.
Nie chcę pisać.
Jeśli zrobiłem r plus, ja napisałby również.
Zanim użyjemy wskaźnika, plik wskaźnik reprezentuje plik.
Chcę się upewnić wskaźnik nie jest równy null, więc
chcę wykonać f.
Chcę powiedzieć, że fp jest równe null.
Wtedy, jeśli jest równe zero, po prostu chcą w zamian wyświetlić błąd.
Więc chcę zrobić coś takiego plik printf nie istnieje, cokolwiek
chcesz zrobić.
I to się wtedy stanie.
Po prostu będziemy chcieli wrócić minus 1 z naszej funkcji.
Po otwarciu pliku, teraz my może faktycznie zacząć czytać
znaki, więc możemy napisać pętlę while i chcemy powiedzieć, że nasza postać, która
jest postacią, jest równa fgetc.
Fgetc czyta pojedynczy znak.
Przekazujemy nasz wskaźnik pliku i chcemy po prostu powiedzieć, że
chcemy czytać znaki, dopóki nie zobaczymy eof.
Więc mówimy, dopóki nie jest równe eof.
Wtedy wyskoczymy z nasza pętla, coś takiego.
Więc będziemy czytać znakami dopóki nie dojdziemy do końca pliku.
O ile nasza postać nie jest nowy wiersz, chcemy zwiększać tylko wtedy, gdy
widzimy nowy wiersz.
Więc powiemy, czy nasza postać równa się wysuwowi wiersza, to w zasadzie chcemy
zwiększyć nasz licznik.
Chcemy tylko powiedzieć, że liczba linii plus plus, to policzy nasze linie.
A potem wyskakujemy z pętli kiedy dojdziemy do końca pliku.
Ale my tylko polecamy nasze konto, jeśli otrzymamy nowy wiersz.
Ostatnia rzecz, na jaką zawsze masz ochotę po przeczytaniu tekstu chcesz
zamknąć plik.
Więc chcesz powiedzieć fclose i następnie przekaż wskaźnik pliku.
A potem chcielibyśmy też ustawić nasz wskaźnik pliku równy null.
A następnie możemy wydrukować plik liczba wierszy, w których się znajdujemy.
Więc możemy po prostu powiedzieć printf total number wierszy r procent d odwrotnym ukośnikiem n, a następnie możemy po
prostu wstawić liczbę wierszy.
A potem po prostu wróć z główne, tak po prostu.
Więc ponownie, aby przejrzeć ten kod, my utwórz nasz
wskaźnik pliku ustaw go na null utwórz znak i lokalną zmienna do liczenia wierszy.
Otwieramy nasz plik w linii 12.
Otwieramy go w trybie tylko do odczytu.
Upewniamy się, że nie jest to null, i następnie wykonujemy pętlę while, aby
przeczytać każdy znak do jesteśmy na końcu pliku.
Za każdym razem, gdy widzimy nowy wiersz, zwiększamy ten licznik.
A potem zamykamy nasz plik i ustaw nasz wskaźnik na null.
A potem drukujemy liczba wierszy.
Chodźmy dalej i zbudujmy to.
Mamy dodatkową linię karmić, chcemy się upewnić.
Więc chcę się upewnić, że tego nie zrobimy zapomnij o przecinku w naszym printf.
A teraz uruchomimy to, będzie przeczytaj z naszego pliku, który stworzyliśmy i
powiedz nam, ile mamy linii.
Więc mówi całkowita liczba linii jest sześć.
Jeśli otworzymy nasz plik tekstowy, powinniśmy zauważ, że istnieje sześć linii, jedna, dwie, trzy,
cztery, pięć, sześć.
Właściwie jest siedem.
Musielibyśmy więc zwiększyć ostatni, dopóki nie otrzymamy eof.
Oto mały błąd gdzie po prostu mówimy, ponieważ to robi nasz
ostatni wysuw wiersza zanim dotrzemy do końca pliku.
Więc naprawdę chciałbyś mieć to będzie jeszcze jeden, a następnie uruchomimy go i faktycznie
zadziała.
Więc w tym przypadku będziemy dodaj kilka linii.
I w tym przypadku powinniśmy to zrobić jeden, dwa, trzy, cztery, pięć,
sześć, siedem, osiem, dziewięć linii.
Zamykamy plik.
Uruchamiamy go ponownie, kompilujemy to i powinniśmy dostać dziewięć.
W tym przypadku otrzymujemy 9.
Więc zapiszę ten kod źródłowy.
Możesz to pobrać.
To są podstawy czytania dane z pliku przy użyciu fgetc.
Ty też chcesz się stać zaznajomiony z fgets.
A następnie, aby sformatować dane wyjściowe, możesz użyć fscanf w celu odczytania sformatowanych danych wyjściowych.
Mam nadzieję, że to było pomocne. Dziękuję Ci.