Pread C Funkcja

Pread C Funkcja
W języku programowania C, cel Pread () Funkcją jest odczytanie określonej liczby bajtów (n) wejściowych, które są wskazane przez deskryptor pliku, do zdefiniowanego obszaru bufora pamięci. Pread () funkcja robi to samo co Czytać() Metoda, ale zaczyna odczytać z określonego miejsca w pliku, a nie aktualizowanie całego pliku wskaźnikiem pliku. Nie dotyczy pozycji wskaźnika pliku. Jednak wartość przesunięcia jest wykorzystywana do określania lokalizacji początkowej pliku. Musimy zbadać, jak działa ta funkcja, aby to zobaczyć.

Zanim przejdziemy dalej, musimy zrozumieć składnię funkcji pread i jej pliki nagłówka wymagane do tej ilustracji. unistd Plik nagłówka służy do pracy z funkcją pread. Oto kod, który należy umieścić w pliku języka programowania C:

#włączać

Pread () Funkcja zawiera te same początkowe trzy parametry, co Czytać() funkcja, a czwarty parametr jest przesunięty dla określonej pozycji wewnątrz pliku. Każda próba uruchomienia Pread () Funkcja w pliku, który nie może ukończyć akcji wyszukiwania, spowoduje błąd. Oto składnia funkcji pread:

ssize_t pread (int file_descriptor, void *bufor, size_t no_of_n_bytes, off_t offset);

Ta funkcja zwraca liczbę całkowitą nieujemną, wskazując, że skutecznie odczytuje określoną liczbę bajtów zwróconych przez tę funkcję. Jeśli zwraca wartość ujemną, nie odczytuje określonej liczby bajtów. Ustawia errno Do Ebadf (co oznacza, że ​​deskryptor pliku nie jest prawidłowym plikiem lub deskryptorem gniazda), Econnreset (rówieśnik wymusił zakończenie połączenia), Efault, Enobufs (niewystarczające zasoby systemowe do zakończenia połączenia), itp.

Aby uzyskać szczegóły errno, Proszę przeprowadzić badania online. Funkcja odczytu nie wymaga autoryzacji do odczytania pliku z systemu plików lub sieci.

Przykład 1

Poniższy przykład otwiera plik i odczytuje z niego dane. Aby rozpocząć ten samouczek, uruchom terminal w Linux, Unix lub dowolny inny system operacyjny, który chcesz. Następnie, jak pokazano poniżej, przejdź z bieżącego katalogu do innego odpowiedniego katalogu roboczego lub folderu „Works” w naszym przypadku. Użyj polecenia „LS”, aby wyświetlić prawie wszystkie pliki i katalogi w katalogu roboczym. W edytorze VIM otwórz lub utwórz nowy plik zatytułowany „Pread.c ”, plik języka programowania C.

Używamy edytora VIM do otwarcia i utworzenia. Możesz jednak użyć dowolnego edytora, który lubisz, na przykład nano, tekst itp. Możesz zobaczyć, że mamy nowy.tekst Plik na tej liście katalogów. Ten plik zostanie teraz wykorzystany w naszym kodzie C. Spójrz na następujący ekran terminalu, aby wizualizować dane wyjściowe:

Pliki nagłówka są zawarte w pierwszych trzech wierszach. Następnie główna metoda zaczyna się od pierwszej linii deklarowanej przez dwie zmienne całkowitowe, i.mi., num I Siledescriptor. Następnie ustawiliśmy przesunięcie na 5. Definiujemy tablicę znaków „bufor” i ustawiamy wartość na „tekst testowy” w trzecim wierszu głównej funkcji. Zapewniamy dostęp tylko do odczytu użytkownika do nowy.tekst plik w wyrażeniu warunkowym za pomocą otwarty() funkcjonować.

Otwarta funkcja jest tutaj, aby zwrócić wartość deskryptora, która jest zapisana w zmiennej SileDescriptor. Jeśli deskryptor uzyska wartość mniejszą niż 0, Perror () Funkcja zostanie wykonana w celu rzucenia błędu. W instrukcji Else używamy funkcji pread do przesyłania wartości zmiennych i funkcji rozmiaru do zmniejszenia rozmiaru bufora, jeśli deskryptor uzyska wartość większą niż 0. Instrukcja drukowania wyświetlała wyjście.

Poniżej znajduje się treść nowego.plik txt. Tekst bufora znajduje się w trzecim wierszu, który jest punktem odczytu offsetowego. Spójrz na następujący ekran terminalu, aby wizualizować dane wyjściowe:

Teraz użyj kompilatora C, aby skompilować Pread.C plik. Używamy kompilatora GCC do kompilacji i wykonywania kodu C. W terminalu wpisz „GCC” i wprowadzić nazwę potrzebnego pliku C, a następnie -o przełącznik i nazwa pliku wyjściowego widocznego na poniższym zrzucie ekranu. Kompilator wyświetli wszelkie błędy podczas kompilacji w oknie terminalu. Wymagany plik wyjściowy jest tworzony, jeśli kompilacja zakończy się powodzeniem i można go znaleźć w katalogu roboczym.

Wyjście może się zmieniać w zależności od wartości przesunięcia. Podobnie, jeśli wartość buforu zostanie zmieniona, wyjście na ekranie terminalu niewątpliwie zmieni się. Teraz wpisz następujące polecenie w wierszu polecenia, aby uruchomić plik wyjściowy. Spójrz na następujący ekran terminalu, aby wizualizować dane wyjściowe:

Teraz, korzystając z edytora vim, chcemy zaktualizować Pread PLIK I Należy ustawić wartość dla przesunięcia na 8, a dla aktualizacji bufora ciąg na „zwierzęta” zamiast „tekstu testowego” jako kod pokazany na poniższym obrazku:

Ponieważ wprowadziliśmy zmiany w pliku kodu programu, teraz musimy ponownie skompilować nasz kod. Proces kompilacji jest taki sam jak w poprzednich krokach. Oto obraz nowego ekranu kompilacji:

Teraz musimy wydrukować wyjście na ekranie za pomocą wyjście Lub plik obiektu Otrzymaliśmy po zakończeniu procedury kompilacji. Zobacz dane wyjściowe na ekranie terminalu, wpisując następujące polecenie. Wyjście to jest „zwierzę”. Spójrz na następujący załączony ekran terminalu, aby wizualizować wyjście:

Wniosek

W tym artykule pokazano użycie funkcji pread C do odczytu danych z niektórych plików tekstowych naszego systemu Linux w bajtach. Omówiliśmy, jak Pread () Funkcja różni się od prostej Czytać() funkcja z powodu użycia określonego punktu do odczytania danych z pliku.