Język C zawiera dwie podstawowe funkcje, które umożliwiają odczytanie plików za pomocą funkcji Read () i Fread (). Ma również metody z funkcjami do odczytu plików znak po znaku.
Ważne jest, aby znać funkcje przetwarzania plików, ich metody wywołania, argumenty wejściowe i wyjściowe itp., Aby używać ich płynnie, ponieważ są one zasobem dostępnym dla programisty do przechowywania i usuwania informacji przechowywanych w systemie.
W tym artykule z podpowiedzi Linux dowiesz się, jak korzystać z funkcji Read () do odczytania plików.
Wyjaśnimy wszystko o „elli”, jego składni, wywołaniu metody, argumentach wejściowych i wyjściowych, rodzaju danych, które każdy akceptuje, i jak je poprawnie zadeklarować.
Następnie stosujemy to, czego się nauczyliśmy, stosując tę funkcję do praktycznych przykładów.
Aby był w pełni świadomy, jak korzystać z funkcji Read (), dodaliśmy specjalną sekcję, która opisuje wszystkie błędy, które mogą wystąpić podczas korzystania z tej funkcji, a także ich wykrywania i identyfikacji, dzięki czemu masz niezbędny techniki szybkiego rozwiązania w przypadku błędu.
Składnia funkcji Read () w języku C
size_t Read (int fd, void *buf, size_t Count);Opis funkcji Read () w języku C
Funkcja Read () odczytuje zawartość otwartego pliku określonego przez jego deskryptor w argumencie wejściowym „FD”. Ta funkcja odczytuje i kopiuje liczbę bajtów w buforze, który jest wskazany przez BUF. Identyfikator „FD” jest liczbą całkowitą zwracaną w wyniku funkcji Open () po otwarciu pliku.
Jeśli funkcja Read () powróci pomyślnie, zwraca liczbę odczytu bajtów. Wynik, który jest równy 0, oznacza, że plik jest odczytany do końca, a -1 oznacza, że występuje błąd. Konkretny błąd można zidentyfikować, pobierając jego kod ze zmiennej globalnej Errno. Później znajdziesz sekcję opisującą błędy, które mogą wystąpić podczas korzystania z funkcji Read () oraz technik ich wykrywania i identyfikacji.
Funkcja Read () jest zadeklarowana w „unistd.H ”nagłówek. Aby go użyć, musisz podać ten plik do kodu w następujący sposób:
#włączaćJak odczytać plik z funkcją Read () w języku C
W tym przykładzie wyjaśnimy, jak otwierać i odczytać plik za pomocą funkcji Open () i Read ().
W tym celu wcześniej utworzyliśmy plik tekstowy o nazwie „Przykład.txt ”, za pośrednictwem menedżera Linux i zapisałem go w katalogu„ Dokumenty ”. Napisaliśmy pierwszy akapit tego artykułu.
Pierwszym krokiem w opracowaniu kodu do odczytania pliku jest włączenie niezbędnych nagłówków i utworzenie funkcji main (), która zwraca pustą wartość. Definiujemy w nim liczbę całkowitą „FD”, która służy jako deskryptor pliku, bufor znaków 1024 o nazwie „Buff”, w którym przechowywana jest informacja odczytana przez funkcję Read (). Ścieżka tablicy przechowuje ścieżkę i nazwę pliku, który chcemy przeczytać.
Po zdefiniowaniu niezbędnych zmiennych wywołujemy funkcję Open (), aby otworzyć plik. Nazywamy tę funkcję, przekazując tablicę ścieżki ścieżką i nazwą pliku jako pierwszy argument wejściowy i określając flagę O_rdonly jako drugi argument. Przekazujemy liczbę całkowitą „FD” jako argument wyjściowy, w którym Open () zwraca deskryptor, którego używamy do odczytania pliku.
Po otwarciu pliku czytamy jego zawartość, wywołując funkcję Read () i przekazując deskryptor „FD”, który jest zwracany przez funkcję Open () jako pierwszy argument. Przekazujemy wskaźnik do bufora „buff” jako drugi argument, w którym przechowujemy zawartość do odczytania. Na koniec przekazujemy rozmiar bufora, który w tym przypadku wynosi 1024 bajtów. Następnie używamy funkcji printf () do wyświetlania zawartości przechowywanej w „buff” w konsoli poleceń.
Oto pełny kod tego przykładu:
#włączaćNa poniższym rysunku widzimy kompilację i wykonanie tego kodu. Jak widzimy, Read () stawia całą zawartość „przykładu.plik txt ”w„ buff ”, a funkcja printf () drukuje go na konsoli poleceń:
Jak wykryć i zidentyfikować błędy, które mogą wystąpić podczas korzystania z funkcji Read () w języku C
Użycie Read () może generować różne błędy. Kiedy tak się dzieje, funkcja ta zwraca wynik równy -1.
Najłatwiejszym sposobem ustalenia, czy wystąpił błąd, jest użycie warunku „jeśli”, w którym warunek jest wartością zwrotną -1. Zobaczmy teraz, w jaki sposób możesz użyć tej metody, aby ustalić, czy wystąpił błąd:
int n;Jeśli funkcja Read () powróci z błędem, przechodzi do instrukcji „jeśli” i drukuje komunikat, „wystąpił błąd podczas próby odczytania pliku”.
Gdy wystąpi błąd, kod numeryczny jest automatycznie przechowywany w zmiennej globalnej Errno, która jest zdefiniowana w „Errno.H ”nagłówek. Ten kod można użyć do identyfikacji wystąpienia błędu.
Poniżej znajduje się fragment błędów, które może wygenerować funkcja Read () i które są zdefiniowane w „Errno.Nagłówek H, wraz z krótkim opisem każdego błędu i powiązanej wartości całkowitej:
Definicja | Wartość w errno | Błąd |
Eagain | 11 | Spróbuj ponownie. |
Ebadf | 9 | Niepoprawny numer pliku. |
EDESTADDRREQ | 89 | Wymagany adres docelowy. |
Efault | 14 | zły adres. |
Efbig | 27 | Plik zbyt duży. |
Eintr | 4 | Przerwane połączenie systemowe. |
Einval | 22 | Błędny argument. |
EIO | 5 | Błąd we/wy. |
Eperm | 1 | Operacja niedozwolona. |
Najłatwiejszym sposobem zidentyfikowania błędu jest otwarcie przełącznika, w którym zmienna errno jest warunek skoku, a każdy przypadek jest definicją błędu.
Następnie spójrzmy na przykład, w którym staramy się wprowadzić deskryptor ze znakiem ujemnym, co powoduje błąd. Aby zidentyfikować błąd, używamy warunku „jeśli”, który widzieliśmy w poprzednim fragmencie. Aby go zidentyfikować, otwieramy przełącznik z trzema najczęstszymi błędami, które ta funkcja może wywołać.
#włączaćJak widać na poniższym rysunku, funkcja Read () zwraca błąd, gdy nieprawidłowy deskryptor jest przekazywany jako argument wejściowy. Wartość pobierana ze zmiennej Errno jest używana jako warunek skoku, który pozwala nam zidentyfikować błąd, gdy wprowadzamy przypadek EBADF.
Wniosek
W tym artykule z Linux pokazaliśmy, jak korzystać z funkcji Read (), jednej z najczęstszych funkcji zaimplementowanych w języku C do odczytania plików.
Przyjrzeliśmy się jej składni i sekcji opisującej jego działanie teoretyczne, argumenty wejściowe i wyjściowe oraz typy danych. Następnie wdrożyliśmy to, czego nauczyliśmy się poprzez praktyczny przykład z kodem i obrazami, które pokazują, jak otwierać i odczytać plik za pomocą funkcji Open () i Read ().
Aby mieć niezbędne środki do rozwiązywania problemów z możliwym błędem podczas korzystania z tej funkcji, dodaliśmy specjalną sekcję, która wyjaśnia metody wykrywania i identyfikacji błędów.