Przykład 1:
Spójrzmy na pierwszy przykład, aby użyć funkcji Posix Open (), aby po prostu utworzyć i otworzyć pliki w trybie tylko do odczytu. W tym celu użyj zapytania dotykowego w powładzie, aby utworzyć plik C. Można go zapisać w bieżącym folderze roboczym.
Otwórz swój nowo wygenerowany plik, i.mi. otwarty.c, w edytorze, aby dodać w nim trochę kodu, tak jak na prezentowanym obrazie. Rozpocznij kod przy użyciu standardowych nagłówków C, takich jak Stdio.H, fcntl.h i errno.h, które są celowo uwzględnione odpowiednio dla standardowego wejścia/wyjścia, użycia zgłoszenia i wyświetlanie błędów. Istnieje funkcja main () do wykonania wykonania. Tworzymy zmienną całkowitą „F”, która jest używana jako deskryptor pliku, aby uzyskać zwróconą wartość z wywołania funkcji „Open ()”. Funkcja Open () używa nazwy pliku tekstowego wraz z dwiema opcjami - opcją „O_rdonly” do odczytania już istniejącego pliku i opcji „O_Creat” do utworzenia pliku, jeśli nie istnieje.
Instrukcja printf () wyświetla zwróconą wartość za pomocą deskryptora „F”. Wartość „F” jest równa „-1”. Rzuca błąd, którego nie udało nam się otworzyć lub utworzyć plik wraz z komunikatem o błędzie za pomocą funkcji Perror (). W przeciwnym razie instrukcja printf () wyświetla komunikat sukcesu na naszym ekranie. Kod jest wypełniony za pomocą instrukcji return 0.
#włączać
#włączać
#włączać
int main ()
int f = otwarty ("nowy.txt ", o_rdonly | O_Creat);
printf („wartość deskryptora pliku = %d \ n”, f);
if (f == -1)
Perror („Nie udało się utworzyć/otworzyć pliku… \ n);
w przeciwnym razie
printf („plik utworzony pomyślnie!\N");
powrót 0;
Po pomyślnym zapisaniu kodu kompilujemy go z narzędziem wiersza poleceń „GCC”, takim jak kompilator C, który jest dostępny w systemie Linux. Napisz słowo kluczowe „GCC” z nazwą pliku „Otwórz.c ”i uruchom go. Kompilacja jest zamożna i próbujemy „./A.Zapytanie o uruchomienie skompilowanego kodu. Dane wyjściowe pokazuje wartość „F” wraz z komunikatem sukcesu, który wskazuje, że ostatecznie utworzyliśmy nowy plik tekstowy. Wyjście instrukcji „LS” pokazuje czerwony podświetlony „nowy.plik txt ”utworzony przez opcję„ O_Creat ”funkcji Open () w bieżącym folderze roboczym.
Użyjmy tego samego kodu, aby uzyskać błąd, jeśli funkcja Open () nie jest w stanie odczytać pliku, który nie istnieje w systemie. Korzystając z tej samej struktury kodu, aktualizujemy pierwszy wiersz kodu funkcji Main (. Tutaj usuwamy opcję „O_Creat”, aby utworzyć nowy plik przy użyciu wywołania funkcji Open () i używamy tylko opcji „O_rdonly”.
Ponadto zmieniamy nazwę pliku na „testuj.txt ”, który nie istnieje w naszym folderze działającym. Oznacza to, że funkcja Open () nie jest w stanie otworzyć pliku, a funkcja Perror () wyświetla odpowiedni komunikat o błędzie w konsoli. Zapiszmy ten zaktualizowany plik C.
#włączać
#włączać
#włączać
int main ()
int f = otwarty ("test.txt ", o_rdonly);
printf („wartość deskryptora pliku = %d \ n”, f);
if (f == -1)
Perror („Błąd: [nie udało się otworzyć pliku]:);
w przeciwnym razie
printf („plik został pomyślnie otwarty!\N");
powrót 0;
Uruchomienie pliku po wykonaniu wyrzuca błąd „brak takiego pliku lub katalogu”.
Przykład 2:
Możesz użyć wywołania funkcji Open (), aby odczytać dane ciągu z określonego pliku za pomocą tablic. Do tego potrzebujesz tylko „unistd.h ”i„ fcntl.Biblioteki H ”. Wykonanie kodu rozpoczyna się od podstawowej metody „main ()”, która deklaruje tablicę typu znaków „A” rozmiaru 30. Deskryptor pliku liczb całkowitych używa zwróconej wartości z wywołania funkcji Open (). Funkcja Open (), która jest tutaj używana, wyrzuca opcję „O_rdonly”, aby otworzyć ją w trybie tylko do odczytu. Funkcja Read () w następnym wierszu służy do przechowywania 12 znaków z „pliku.txt ”za pomocą deskryptora„ f ”i zapisz go do tablicy postaci„ A ”.
Jeśli funkcja Read () z powodzeniem odczytują dane z pliku, zwraca pewną wartość do zmiennej „N”. Wywołanie funkcyjne zapisu () używa zmiennej „N” do zapisywania danych na konsoli, która jest właśnie zapisana w tablicy „A”.
#włączać
#włączać
int main ()
Char A [30];
int f = otwarty ("plik.txt ", o_rdonly);
int n = odczyt (f, a, 12);
Napisz (1, a, n);
Teraz musimy utworzyć ten sam plik tekstowy „plik tekstowy.txt ”w tym samym folderze i dodaj do niego dane tekstowe, jak przedstawiono za pomocą instrukcji„ CAT ”Linux. Kompilujemy i wykonujemy nasze „Otwarte.plik C ”i uzyskaj pierwsze 12 znaków z„ pliku.txt ”są wyświetlane na skorupce.
Przykład 3:
Możesz użyć wywołania funkcji Open (), aby skopiować dane tekstowe z jednego pliku do drugiego z niewielką zmianą kodu. Odrzuciliśmy ten sam przykładowy fragment kodu i wprowadzamy pewne zmiany w kilku jego liniach. Rozmiar bufora znaków „A” jest aktualizowany do 50, a deskryptor F1 otwiera plik „Plik.txt ”w trybie„ tylko do odczytu ”za pomocą„ O_rdonly ”w funkcji Open (). Funkcja Read () używa deskryptora „F1” do odczytania 25 znaków z „pliku.plik txt ”i zapisz je do buforowania tablicy„ a ”. Zwrócona wartość sukcesu/awarii jest zapisywana na zmienną „N”.
Do utworzenia nowego pliku o nazwie nowy plik o nazwie nowy plik plik jest używany.txt ”w tym samym folderze za pomocą opcji„ 0_Creat ”w metodzie„ Otwórz ”i z trybem„ tylko zapisu ”(O_WRONLY) z wartością 0642 do zapisu. Wywołanie funkcyjne zapisu () używa wartości „N”, aby uzyskać dane z bufora znaków „A” i paruj je do drugiego pliku „źródło.txt ”za pomocą deskryptora„ F2 ”. Teraz uruchommy następujący kod, aby zobaczyć, co otrzymamy w wyjściu:
#włączać
#włączać
int main ()
Char A [50];
int f1 = otwarty ("plik.txt ", o_rdonly);
int n = odczyt (f1, a, 25);
int f2 = otwarty ("Źródło.txt ", O_Creat | O_Wronly, 0642)
Napisz (f2, a, n);
Teraz mamy „plik.txt ”i„ Otwórz.plik C ”w bieżącym folderze. Możesz zobaczyć dane w „pliku.tekst". W otwartym.C „Wykonanie pliku, źródło.Plik TXT jest generowany i 25 znaków z „pliku.plik txt ”jest kopiowany do„ źródła.plik txt ”również.
Wniosek
Ten przewodnik jest prosty, ale pełen przykładów C do wykorzystania i nauki wywołania funkcji POSIX „Open ()”. Korzystając ze wszystkich podanych przykładów, nigdy nie zawiedziesz podczas korzystania z plików w C.