Otwórz funkcję w języku C

Otwórz funkcję w języku C

Znajomość funkcji otwartych, odczytu i zapisu jest niezbędna, ponieważ zawsze potrzebujemy ich do przechowywania lub usuwania informacji przechowywanych w plikach. Język C zawiera dwie podstawowe funkcje, których można użyć do otwarcia plików za pomocą funkcji Open () i Fopen (), każda z różnymi metodami wywoływania.

W tym artykule z podpowiedzi Linux dowiesz się, jak korzystać z funkcji Open (). Wyjaśnimy wszystko na temat tej funkcji, jej składni, wywołania metody, argumentów wejściowych i wyjściowych, rodzaju danych, które przyjmuje w każdym przypadku, oraz jak poprawnie zadeklarować.

Następnie zastosujemy to, czego się nauczyliśmy, wdrażając użycie tej funkcji w praktycznych przykładach, które przygotowaliśmy dla Ciebie z fragmentami kodowymi i obrazami pokazującymi użycie funkcji Open () w języku C.

Aby mieć kompleksową wiedzę, dodajemy specjalną sekcję, która opisuje wszystkie błędy, które mogą wystąpić podczas korzystania z tej funkcji, a także ich wykrywanie i identyfikację, aby w przypadku ich wystąpienia masz niezbędne techniki dla a Szybkie rozwiązanie.

Składnia funkcji Open () w języku C

int Open (const char *pathName, int flags);

Opis funkcji Open () w języku C

Funkcja Open () otwiera plik do odczytu lub pisania. Ta funkcja otwiera plik określony w argumencie wejściowej ścieżki. To wejście musi określić ścieżkę bezwzględną lub względną oraz nazwę pliku w formacie ciągu lub wskaźnika.

Argument wejściowy flag określa atrybuty, które plik musi mieć. Poniżej znajduje się lista flag, które akceptuje ten argument wejściowy, oraz krótki opis atrybutu, który każdy ustawia:

Flaga Opis
O_rdonly Otwórz tylko do odczytu.
O_wronly Otwórz tylko do pisania.
O_RDWR Otwórz plik do czytania i pisania.
O_Creat Tworzy plik na ścieżce i nazwie określonej w nazwa ścieżki argument.
O_ Dodatek Otwiera plik i umieszcza kursor na końcu zawartości.
O_ASYNC Włącz kontrolę wejściową i wyjściową przez sygnał.
O_CLOEXEC Włącz tryb zamykania w pliku otwartym.
O_nonblock Wyłącza blokowanie otwartego pliku.
O_TMPFILE Utwórz nienazwany plik tymczasowy na określonej ścieżce.

W przypadkach, w których używa się więcej niż jednej flagi, należy między nimi wykonywać logiczną operację „lub”. Można to zrobić w ramach flag argumentów wejściowych w tym samym wierszu kodu, co wywołanie funkcji.

Atrybuty i tryby można zmienić lub konsultować po otwarciu pliku za pomocą funkcji FCNTL ().

Funkcja Open () zwraca liczbę całkowitą zawierającą deskryptor otwartego pliku. Ten deskryptor jest używany jako argument wejściowy dla funkcji przetwarzania plików, takich jak read (), zapis () itp., Aby odwołać się do pliku.

Ta funkcja jest zdefiniowana w „unistd.H ”nagłówek. Flagi, które definiują atrybuty i tryb do otwarcia pliku, są zdefiniowane w „FCNTL.H". Aby użyć funkcji Open (), musisz podać te nagłówki w swoim kodzie w następujący sposób:

#włączać
#włączać

Jak otworzyć plik za pomocą funkcji Open () w języku C

W tym przykładzie użyjemy funkcji Open (), aby otworzyć plik w trybie odczytu i zapisu. W takim przypadku jest to wcześniej utworzony plik wywołany "przykład.tekst" który jest przechowywany w „Dokumenty”.

Krok 1: Pierwszym krokiem jest włączenie wymaganych nagłówków i oświadczenie, że wychodzi z pustego i powraca w funkcji Main ().

Krok 2: Następnym krokiem jest zadeklarowanie zmiennych, które służą jako argumenty wejściowe i wyjściowe do funkcji Open (). Jako argument wyjściowy deklarujemy liczbę całkowitą „FD”, która jest deskryptorem pliku. Jako argument wejściowy deklarujemy tablicę znaków bufora, która zawiera ciąg z ścieżką i nazwą pliku do otwarcia.

Zgłaszamy również szereg 512 znaków o nazwie „tekst”, w którym przechowujemy tekst, który chcemy napisać do pliku, który w tym przypadku jest pierwszym akapitem tego artykułu.

Krok 3: Po ogłoszeniu zmiennych wywołujemy funkcję Open () i przekazujemy liczbę całkowitą „FD” jako argument wyjściowy, ścieżkę ciągów jako pierwszy argument wejściowy i flaga O_Wronly jako drugi argument.

Krok 4: Gdy otwarte () zwraca z wywołania, zwraca deskryptor pliku, który jest otwarty w „FD”. Następnie piszemy z funkcją zapisu (), przekazując deskryptor „FD” jako pierwszy argument wejściowy, tekst ciągu jako drugi argument wejściowy, a na koniec rozmiar tekstu, który jest uzyskiwany za pomocą funkcji strlen (). Po operacji zapisu zamykamy plik za pomocą funkcji Close ().

Oto pełny kod tego przykładu:

//Krok 1
#włączać
#włączać
#włączać
#włączać
#włączać
void main ()

//Krok 2
intfd;
Char Buffer [] = "Dokumenty/przykład.tekst";
Char Text [512] = "Znajomość różnych funkcji otwartych, odczytu i zapisu jest niezbędna, ponieważ zawsze będziemy potrzebować ich do przechowywania lub usuwania informacji przechowywanych w plikach.
Język C zawiera dwie podstawowe funkcje, których można użyć do otwierania plików, Open () i Fopen (), każda z różnymi metodami wywoływania.";
//Krok 3
fd = otwarte (bufor, o_wronly);
//Krok 4
Write (FD i Text, Strlen (Text));
Zamknij (FD);

Poniższy rysunek pokazuje kompilację i wykonywanie tego kodu wraz z plikiem, który właśnie napisaliśmy. Jak widzimy, funkcja Open () otwiera plik poprawnie. Następnie używamy funkcji Write () do napisania zawartości tekstu. W takim przypadku zawiera pierwszy akapit tego artykułu:


Błędy, które mogą wystąpić podczas korzystania z funkcji Open (): Jak je wykryć i identyfikować

Korzystanie z funkcji Open () może prowadzić do różnych błędów. Jeśli tak jest, 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ą -1, która jest zwracana w „FD”. Spójrzmy teraz, w jaki sposób możesz użyć tej metody, aby ustalić, czy wystąpił błąd:

fd = Open („ścieżka/nazwa pliku”, flagi);
if (fd ==-1)
printf („wystąpił błąd podczas próby otwarcia pliku.");

Jeśli funkcja Open () powraca z błędem, przechodzi do instrukcji „If” i drukuje wiadomość, „Wystąpił błąd podczas próby otwarcia pliku".

Gdy Open () zwraca wynik równy -1, automatycznie przechowuje kod numeryczny w zmiennej globalnej Errno, która jest zdefiniowana w „Errno.H ”nagłówek. Ten kod numeryczny można użyć do identyfikacji wystąpienia błędu.

Poniżej znajduje się fragment błędów, które może wygenerować funkcja Open (), wraz z krótkim opisem każdego błędu i powiązanej wartości całkowitej:

Definicja Wartość w Errno Błąd
Eperm 1 operacja niedozwolona
Enoent 2 Brak takiego pliku lub katalogu
Eintr 4 Przerwane połączenie systemowe
Enxio 6 Brak takiego urządzenia ani adresu
Enomem 12 Brak pamięci
EACCES 13 Zezwolenie odrzucone
Efault 14 Zły adres
Ebusy 16 Urządzenie lub zasób zajęty
Eexist 17 plik istnieje
Enodev 19 Nie ma takiego urządzenia
Enotdir 20 Nie katalog
Eisdir 21 Jest katalogiem
Einval 22 Błędny argument
Efile 23 Przepełnienie tabeli plików
Emfile 24 Zbyt wiele otwartych plików
Etxtbsy 26 Plik tekstowy zajęty
Enospc 28 Brak miejsca w urządzeniu
Erofs 30 System plików tylko do odczytu
Enametoolong 36 Nazwa pliku zbyt długo
Elop 40 Zbyt wiele symbolicznych linków napotkanych
Eoverflow 75 Wartość zbyt duża dla zdefiniowanego typu danych
Edquot 122 Mozliwa ilość przekroczona

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 rozważ przykład, w którym otwieramy plik, który nie istnieje, co powoduje błąd. Aby wykryć 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 może wytworzyć ta funkcja:

#włączać
#włączać
#włączać
#włączać
void main ()

intfd;
Char Buffer [1024];
fd = otwarte (”dokumenty/brak egzystencji.txt ", O_Append | O_RDWR);
if (fd ==-1)
przełącznik (errno)
case eperm:
printf („Operacja niedozwolona. Błąd: %i \ n ”, errno);
przerwa;
case enoent:
printf („Brak takiego pliku/katalogu. Błąd:%i \ n ”, errno);
przerwa;
case enotdir:
printf („Nie katalog. Błąd: %i \ n ”, errno);
przerwa;


Poniższy obraz pokazuje kompilację i wykonanie tego kodu. W nim widzimy, w jaki sposób wygenerowany błąd jest wykrywany w stanie „jeśli” i w jaki sposób błędy są identyfikowane w przełączniku warunkowym, aby wyświetlić komunikat i określoną wartość:

Wniosek

W tym artykule z podpowiedzi Linux wyjaśniliśmy, jak używać funkcji Open () do otwarcia plików.

Pokazaliśmy wam składnię tej funkcji i teoretyczny opis tego, jak ona działa, metoda połączenia, argumenty wejściowe i typ danych, który jest używany w każdym przypadku.

Następnie zaimplementowaliśmy użycie funkcji Open () w praktycznym przykładzie przy użyciu fragmentów kodu i obrazów. Pokazaliśmy, jak zadeklarować wymagane zmienne, wywołać tę funkcję, aby otworzyć plik i napisać do niej.

Dołączyliśmy również sekcję, w której wymieniamy wszystkie błędy, które może wygenerować ta funkcja. Pokazaliśmy ci techniki ich wykrycia i sklasyfikowania, abyś miał niezbędne środki do szybkiego naprawy, gdy wystąpią.