Witam i witam ponownie.
W tym wykładzie chcę mówić o pisaniu do pliku.
Skoncentrujemy się przy zapisywaniu do pliku tekstowego.
O czym się dowiemy jest to, jak możesz pisać znaki, jak możesz
pisać łańcuchy i jak możesz napisać sformatowane wyjście.
Te trzy sposoby również to mogliśmy czytać.
Więc są trzy funkcje naprawdę musisz
być zaznajomiony z tymi rzeczami.
Najprostszą operacją zapisu jest zawarte w funkcji fputc.
Więc tak jak tam był fgetc do czytania znaków
jest fputc do pisania znaków.
To napisze singiel znak do pliku tekstowego, fputc.
Nie tak wydajne jak pisanie struny, ale czasami konieczne.
Przyjmuje liczbę całkowitą jako swoją pierwszy parametr i wskaźnik pliku jako
drugi parametr i zwraca liczbę całkowitą.
Funkcja zapisuje plik znak określony
przez pierwszy argument pliku identyfikowane przez drugi argument.
Tak więc wskaźnik pliku reprezentuje co zawsze robi: plik, do
którego chcesz pisać.
A potem postać ty faktycznie chcesz pisać,
to twój pierwszy parametr.
Zwracany znak jest czym został napisany, jeśli się powiedzie.
Pamiętaj, jeśli zwróci eof, to znaczy, że to była porażka.
Jeśli zwróci cokolwiek innego niż eof, to znaczy, że się udało.
W praktyce postacie są zwykle nie są zapisywane
pojedynczo w fizycznym pliku.
Jest to wyjątkowo nieefektywne.
Funkcja putc to odpowiednik fputc.
Często widzisz to również używane.
Wymaga tych samych argumentów a typ zwrotu jest taki sam.
Różnica między nimi jest taka że putc można zaimplementować
w bibliotece standardowej jako makro.
Natomiast fputc jest funkcją tak.
Nie ma wielu różnic, ale nie dowiedzieliśmy się o makrach.
Więc będziemy trzymać się fputc do pisania pojedynczych znaków.
Na przykład tak całkiem proste.
Pierwsza rzecz, którą musisz zrobić jak zawsze czy musisz otworzyć plik.
Wcześniej deklarujemy nasze zmienne, które deklarujemy jako wskaźnik pliku, powinny być
inicjalizowane jako null.
A potem nasza liczba całkowita która będziemy pisać.
Kiedy otworzymy nasz plik, będziesz zauważ, że robimy w lub w plus.
W oznacza, że zamierzamy tylko pisz, nie umiesz czytać.
W plus oznacza, że możesz pisać i czytać.
W takim przypadku możemy pisać i czytać.
Tutaj mamy pętlę for.
Przechodzimy przez wszystkie znaków, począwszy od 33 do 100.
Kiedy są to liczby całkowite, co oznacza to, że znak
jest reprezentowany w tabeli ASCII.
Na przykład, jeśli napiszesz postać 59, musiałbyś poszukać tego w tabeli ASCII,
żeby zobaczyć, co reprezentuje, ale byłby to rzeczywisty charakter.
Tutaj tylko piszemy ASCII ma wartości od 33 do 100,
a mówimy fputc char fp.
I możesz użyć konwersji funkcje, jeśli chcesz tworzyć
wartości ASCII i liczby całkowite, możesz po prostu użyć atoi.
Więc jeśli chcesz napisać znak c, możesz powiedzieć fputc atoi,
a następnie umieścić cw apostrofach.
To też byłoby w porządku ponieważ zamieniłby ASCII na
liczbę całkowitą i zapisałby ją.
Ale pierwszym argumentem jest liczba całkowita, więc musisz napisać liczbę całkowitą.
Drugi argument to nasz plik wskaźnik, całkiem proste.
A potem ostatnia rzecz, jaką musimy zrobić musimy zamknąć ten plik.
Prawdopodobnie też chcemy ustaw wskaźnik fp na null.
Ale znowu bierze liczbę całkowitą.
Więc uważaj tam.
Jest zawsze reprezentowany w tabeli ASCII.
Ale możesz przekonwertować rzeczywisty plik znaki dwie liczby całkowite przy użyciu atoi.
Co powiesz na napisanie stringa do pliku
tekstowego, znacznie bardziej użytecznego, wydajniejszego.
Tutaj używasz funkcja fputs.
To ci pozwoli napisz do dowolnego pliku lub strumienia.
To jest podobne do fgets pobiera ciąg stałego ładowania, który chcesz
zapisać jako pierwszy parametr do wskaźnika.
I zajmuje to, jako nasza sekunda parametr, wskaźnik pliku, do jakiego
pliku chcesz pisać.
A następnie zwraca int.
Więc pierwszy argument jest nasz wskaż ciąg znaków, który
chcesz napisać.
Drugim argumentem jest plik wskaźnik, a funkcja zapisze znaki
z ciągu dopóki nie osiągnie terminatora zerowego.
Nie zapisuje wartości null znak terminatora do pliku, więc
musisz go jawnie zapisać.
Może to skomplikować sprawę, ponieważ kiedy odczytujesz dane, może
to być zmienna długość i to nie zakończy się na zerowym terminatorze.
Więc musisz ... Spodziewając
się, że napiszesz plik wiersz tekstu zakończony
znakiem nowego wiersza.
Więc upewnij się, że jesteś znajomy z
terminatorem null i albo jawnie zapisz go przy użyciu fputc, pojedynczy znak lub napisz go, a po
prostu doda nowy znak linii na końcu po napisaniu.
Więc spodziewa się tego nowego znak linii, aby tam być.
Musisz to wyraźnie określić.
To całkiem proste pod względem kodu.
Po prostu mówisz fopen.
Fputs, zapisuje ciąg w nowa linia za pomocą wskaźnika pliku.
A potem inny fputs tutaj pisze kolejny ciąg, a następnie zamykasz go.
Więc w tym przypadku napisaliśmy dwa stringi, właściwie dwa wiersze kodu lub dwa wiersze w
pliku i my otworzył plik za pomocą w plus, który służy do
czytania i pisania.
Oto przykłady zapisu całkiem proste.
Wystarczy wywołać kilka funkcji, fopen, a następnie fputs, a następnie fclose.
Teraz do pisania sformatowanych danych wyjściowych, będziemy używać fprintf.
Ponownie zauważysz to po scanf do odczytu i wprowadzenia
oraz printf, po prostu to dodaj fprefix przed funkcją i
piszesz sformatowane dane wyjściowe.
A więc do pisania sformatowanych danych wyjściowych z fprintf zwraca liczbę całkowitą.
Pobiera strumień pliku jako plik pierwszy
parametr, a następnie stosowane są specyfikatory formatu przecinkami ze zmienną liczbą argumentów
dla każdego formatu specyfikator, tak jak naprawdę printf.
Pierwszy argument funkcji jest wskaźnikiem do obiektu pliku.
A potem jest drugi argument te zmienna liczba argumentów.
To ciąg c, który zawiera jeden lub więcej z
następujących elementów, biały znak lub inny niż biały znak znak, specyfikatory formatu.
I znowu jest bardzo podobny do printf.
Ale tak naprawdę piszesz do pliku.
Możesz więc pisać sformatowane wyjście do pliku.
Jeśli się powiedzie, wróci liczba zapisanych znaków.
W przeciwnym razie tak się stanie zwraca liczbę ujemną,
jeśli się nie powiedzie.
Wygląda mniej więcej tak.
Dołączasz standardowy nagłówek IO.
Tworzysz wskaźnik pliku.
Następnie użyj wskaźnika pliku aby otworzyć jakiś plik tekstowy, użyj go do w plus
do czytania i pisania a potem po prostu powiesz fprintf.
W tym przypadku mówimy fprintf.
Określamy plik wskaźnik, a następnie określamy cztery ciągi oddzielone
znakiem spacja, a następnie procent d.
A my piszemy witam, mam numer 555.
Więc plik będzie miał dane sformatowane podczas ich zapisywania.
Spójrzmy na to w blokach kodu i zobacz, jak to wygląda.
Więc nie ma tu dużo kodu.
Mamy tylko kilka linijek kodu.
Na linii czwartej jesteśmy tworząc nasz wskaźnik pliku.
I znowu będziemy chcieli zainicjuj to na null.
Następnie w linii szóstej nazywamy fopen.
I mówimy, że otwórz plik. txt, więc plik. txt musi istnieć i
gdzie jest uruchomiony plik źródłowy c lub jeśli wykonujesz
program ręcznie, gdziekolwiek jest plik wykonywalny.
Otworzymy się do czytania i pisania.
Po tym, jak go otworzyliśmy, chcemy się upewnić, że wskaźnik
pliku nie jest pusty.
Chcemy więc powiedzieć, że nie fp.
Jeśli nie jest zerowa, to my może zacząć zapisywać dane.
W tym przypadku w linii 9 jesteśmy zamierzam zapisywać sformatowane dane.
Więc to, co napiszemy, to napiszemy jeden ciąg, dwa ciągi,
trzy struny, cztery ciąg, a następnie liczbę całkowitą.
A potem są następne parametry po prostu oddzielone przecinkami ciągi
znaków oraz nasza liczba całkowita na końcu.
Muszę tylko naprawić te podwójne cudzysłowy, ponieważ to nie działa poprawnie, więc 555 znajduje
się na samym końcu.
I wtedy się zamknie plik i zwróć go.
Więc chodźmy dalej i spróbujmy budować to i uruchom, a nie zobaczymy żadnego
rzeczywistego wyniku działania.
Będziemy musieli spojrzeć jak wygląda plik.
Kiedy więc kompilujemy ten plik, chcesz się upewnić, że instrukcja
if mówi, że nie jest równe null.
Więc kiedy to uruchomimy, ponownie, nie zobaczysz żadnych wyników,
po prostu będzie działać.
A potem, gdy spojrzysz na plik wewnątrz katalogu zobaczysz, że
zawiera on dane wejściowe w pojedynczym pliku wiersz, cześć, nazywam się FPP lub 555.
Więc tak możesz zapis sformatowanych danych wyjściowych.
To całkiem proste.
Możesz dodać nowe linie, jeśli chcesz.
Doda nową linię na końcu, ale możesz tu wstawić lewy ukośnik n.
Działa tak samo jak printf.
Ponownie, musimy to uruchomić, my tak naprawdę nie widzisz żadnych interesujących wyników, dopóki
nie spojrzysz na plik.
W takim przypadku widać wysunięcie wiersza.
Więc zapisywanie wyników do pliku jest całkiem proste.
Chcesz pisać postacie, ty
do fputc, chcesz napisać łańcuchy fputs, sformatowane wyjście fprintf.
Będziemy mieli z tym pewne wyzwania pomóc Ci
jeszcze lepiej się z tym zapoznać, ale całkiem łatwo zapisuje dane wyjściowe do pliku tekstowego.
Dziękuję Ci.