„Jak mówi tytuł, że wywołanie systemu odczytu musi czytać coś z określonej lokalizacji. Linux dostarcza nam wywołanie systemu odczytu do odczytu danych z dowolnego pliku i wyświetlania ich na konsoli, a jądro systemu Linux powinno być zaangażowane w cały ten proces, tj.mi., Aby otworzyć plik, odczytaj go, zapisz dane do innego pliku itp. Ten przewodnik będzie premią do każdego użytkownika Linux i C, który chce nauczyć się korzystać z wywołania systemu odczytu podczas kodowania. Przed spojrzeniem na fragment kodu C utworzymy plik tekstowy i plik C. Plik tekstowy będzie zawierał losowe dane tekstowe, które będą używane przez funkcję Read (). Oba pliki są tworzone przez to samo „dotyk” jeden po drugim, a zapytanie „LS” pokazuje je w folderze domowym."
Dodaliśmy 3 wiersze tekstu w pliku tekstowym.plik txt, abyśmy mogli uzyskać do niego dostęp za pomocą funkcji read (). Te 3 linie są wyświetlane za pomocą zapytania „CAT”.
Przykład 01
W naszym pierwszym przykładzie będziemy pokazać użycie połączenia systemowego lub funkcji POSIX w celu uzyskania dostępu do danych z określonego pliku i wyświetlania ich na konsoli. Przykładowy kod rozpoczyna się od podstawowych 3 plików nagłówka. Stdio.H i Unistd.H nagłówki są używane do standardowych funkcji wejściowych/wyjściowych. Fcntl.H służy do korzystania z funkcji odczytu i zapisu POSIX do tworzenia i dostępu do plików. Snippet pokazany poniżej został zainicjowany z deklaracją bufora znaków o rozmiarze 100. Dane tekstowe, które zostały pokazane w pliku tekstowym.Plik TXT z powyższego obrazu będzie dostępny i wyświetlany w fragmentach.
Instrukcja printf () jest wykorzystywana 3 razy, aby poinformować nas o liczbie wszystkich znaków, które zostanie pobrane z pliku i wyświetlone na konsoli. Trzy deskryptory plików, F1, F2 i F3, są używane osobno do wywołania funkcji „Open ()” C, aby otworzyć plik tekstowy.plik txt w trybie tylko do odczytu za pomocą opcji „O_rdonly”. Zmienne N1, N2 i N3 są wykorzystywane do pobrania zwróconego wyniku od wywołania funkcji „odczyt” odpowiednio 3 razy.
Za każdym razem przekazujemy go bufor lub tablicę typu, i.mi., ARR, inny deskryptor pliku, i.mi., F1, F2, F3 i inna liczba znaków, do których można uzyskać dostęp z pliku i zapisywać do bufora, i.mi., Odpowiednio 20, 40 i 60. Za każdym razem używamy zwróconego wyniku, i.mi., N1, N2, N3, w połączeniu z funkcją zapisu (), aby uzyskać dostęp do zmiennej bufora „ARR” z pierwszym parametrem jako „1”. Ta funkcja zapisu wyświetliłaby 20, 40 i 60 znaków po odczytaniu z pliku plik tekstowego.TXT w buforze postaci „ARR”. Instrukcja printf () była używana za każdym razem do dodania przerwy w linii za pomocą „\ n” w obszarze ciągów.
W ten sposób, za każdym razem, niektóre dane tekstowe byłyby wyświetlane na powładzie po funkcji Read ().tekst.„Szybko zapiszmy nasz kod przed kompilacją.
#włączaćPo skoncentracji tego kodu z kompilatorem „GCC” C, wypróbowaliśmy „./A.OUT „Polecenie uruchomienia skompilowanego kodu. Pokazuje 20, 40 i 60 znaków z pliku tekstowego za pomocą „Odczyt."
Przykład 02
Załóżmy, że pokazałeś dane o pile w pliku tekstowym.plik txt i chcesz przenieść dokładną liczbę znaków do innego pliku. W tym celu będziesz używać funkcji Read (.
Teraz użyjemy tych samych nagłówków, które wykorzystaliśmy w powyższym przykładzie do odczytania z pliku do zmiennej bufora. Metoda główna () tego kodu jest inicjowana z tablicą 40-znakową „ARR.„Instrukcje wyjściowe printf () są wykorzystywane na każdym etapie, aby wyjaśnić każdy i wszystko szczegółowo, i.mi., Otwarcie pliku, odczyt z pliku, tworzenie innego pliku, kopiowanie danych z pierwszego pliku do drugiego pliku itp. Oprócz tego używaliśmy funkcji sleep () podczas inicjalizacji każdego kroku w tym przykładowym kodzie. Po pierwszej funkcji sleep () używamy funkcji Open (), aby otworzyć nasz plik o nazwie „plik tekstowy.txt ”w trybie odczytu i zapisz wynik powrotny na plik deskryptora FD1.
W następnym kroku użyjemy funkcji Read () do odczytania danych z pliku tekstowego.TXT za pomocą deskryptora pliku FD1. Musisz zwrócić uwagę na jedną rzecz; Czytamy tylko 30 znaków z pliku i zapisujemy je do tablicy postaci „ARR.”Jeśli funkcja Read () działa dobrze, zwróci pewien numer sukcesu do zmiennej liczby całkowitych„ N.„W trzecim kroku tworzyliśmy inny plik o nazwie„ Dest.txt ”ponownie za pomocą funkcji Open ().
Na tym etapie dostarczono dwie opcje otwarte. W ostatnim kroku odrzucamy wywołanie systemowe zapisu (), przekazując go deskryptor pliku FD2, zmienną „n” i tablicę bufora „ARR”, aby skopiować dane z bufora „ARR” do drugiego pliku za pomocą F2.
#włączaćW przypadku wykonania kodu pierwszy plik został otwarty, a tablica „ARR” odczytała z niego dane.
Nowy plik został utworzony w trybie zapisu.
Dane z tablicy znaków „ARR” są przekazywane do drugiego pliku.
Dane 30-znakowe zostały pomyślnie skopiowane do Dest.plik txt, jak pokazano poniżej.
Wniosek
W tym przewodniku krótko wyjaśniliśmy użycie wywołania systemu Read () w języku C. W tym celu wykorzystaliśmy tablice buforowe do odczytu danych z określonego pliku i wyświetlania na konsoli. Użyliśmy również tablicy funkcji Read () i bufora do kopiowania danych tekstowych z jednego pliku do drugiego.