Opisuje, w jaki sposób programista C tworzy, otwiera i zamyka plik tekstowy lub plik binarny.
Plik oznacza serię bajtów, niezależnie od tego, czy jest to plik tekstowy, czy plik binarny. Język C nie tylko zapewnia dostęp do funkcji najwyższego poziomu, ale także zapewnia podstawowe wywołanie (OS) w celu przetwarzania plików na urządzeniu pamięci masowej . W tym rozdziale wyjaśnione zostaną ważne wywołania w zarządzaniu dokumentami.
plik otwarty
Zwykle przy użyciu funkcji fopen () do utworzenia nowego pliku lub otwarcia istniejącego pliku, to wywołanie inicjuje obiekt typu FILE, który zawiera wszystkie informacje niezbędne do kontrolowania przepływu. Oto prototyp wywołania tej funkcji:
PLIK *fopen ( const char * nazwa pliku , const char * mode );
Tutaj nazwa pliku to ciąg znaków określający nazwę pliku, wartość trybu dostępu może być jedną z następujących wartości:
wzór | opis |
r | Otwórz istniejący plik tekstowy, który umożliwia jego odczytanie. |
w | Otwórz plik tekstowy, który umożliwia zapis do pliku. Jeśli plik nie istnieje, tworzony jest nowy plik. Tutaj Twój program zapisuje zawartość od początku pliku. Jeśli plik istnieje, zostanie obcięty do zera i zapisany ponownie. |
a | Otwórz plik tekstowy i zapisz do pliku w trybie dołączania. Jeśli plik nie istnieje, tworzony jest nowy plik. W tym przypadku program dołącza zawartość do plików, które już posiadasz. |
r+ | Otwórz plik tekstowy, który umożliwia odczyt i zapis pliku. |
w+ | Otwórz plik tekstowy, który umożliwia odczyt i zapis pliku. Jeśli plik już istnieje, jest on obcinany do zerowej długości, a jeśli plik nie istnieje, tworzony jest nowy plik. |
a+ | Otwórz plik tekstowy, który umożliwia odczyt i zapis pliku. Jeśli plik nie istnieje, tworzony jest nowy plik. Odczyt rozpoczyna się od początku pliku, a zapis odbywa się tylko w trybie dopisywania. |
Jeśli przetwarzany jest plik binarny, użyj następującego trybu dostępu, aby zastąpić powyższe:
„rb”, „wb”, „ab”, „rb+”, „r+b”, „wb+”, „w+b”, „ab+”, „a+b”
zamknięty plik
Aby zamknąć plik należy skorzystać z funkcji fclose(). Prototyp funkcji wygląda następująco:
int fclose (PLIK *fp);
- Jeśli plik zostanie pomyślnie zamknięty, funkcja fclose() zwróci zero, a w przypadku błędu zwróci wartość EOF. Ta funkcja w rzeczywistości usuwa dane z bufora, zamyka plik i zwalnia całą pamięć używaną dla tego pliku. EOF jest stałą zdefiniowaną w pliku nagłówkowym stdio.h
Standardowa biblioteka C udostępnia różne funkcje do odczytu i zapisu plików znakami lub ciągiem znaków o stałej długości.
Napisz do pliku
Oto najprostsze funkcje zapisu znaków do strumienia:
int fputc (int c, PLIK *fp);
Funkcja fputc () zapisuje wartość znakową parametru c do strumienia wyjściowego, na który wskazuje fp. Jeśli zapis się powiedzie, zwraca zapisany znak i EOF, jeśli wystąpi błąd. Aby zapisać w strumieniu ciąg znaków kończący się wartością null, możesz użyć następującej funkcji:
int fputs ( const char *s , PLIK *fp );
Funkcja fputs() zapisuje ciąg s do strumienia wyjściowego, na który wskazuje fp. Jeśli zapis się powiedzie, zwraca wartość nieujemną i EOF, jeśli wystąpi błąd. Możesz także użyć funkcji int fprintf (FILE * fp, const char * format,...) zapisuje ciąg znaków do pliku. Wypróbuj następujący przykład:
Uwaga:Upewnij się, że masz dostępny katalog tmp, a jeśli nie istnieje, musisz go najpierw utworzyć na swoim komputerze.
/ tmp jest zwykle katalogiem tymczasowym w systemie Linux. Jeśli uruchamiasz na systemie Windows, musisz go zmodyfikować do istniejącego katalogu w środowisku lokalnym, takiego jak: C:\tmp, D:\tmp itp.
żywy przykład
#włączać
Kiedy powyższy kod zostanie skompilowany i wykonany, tworzy nowy plik test.txt w katalogu /tmp. I zapisuje w dwóch liniach, używając dwóch różnych funkcji. Przeczytajmy dalej ten plik.
Przeczytaj plik
Poniżej znajduje się najprostsza funkcja odczytująca pojedynczy znak z pliku:
int fgetc (PLIK * fp);
Funkcja fgetc() odczytuje znak z pliku wejściowego, na który wskazuje fp. Wartość zwracana to przeczytany znak i EOF, jeśli wystąpi błąd. Poniższa funkcja umożliwia odczytanie ciągu znaków ze strumienia:
char *fgets ( char *buf, int n, PLIK *fp);
Funkcja fgets() odczytuje n-1 znaków ze strumienia wejściowego kierowanego przez fp. Kopiuje przeczytany ciąg do bufora buf i dodaje na końcu znak zerowy, aby zakończyć ciąg.
Jeśli ta funkcja napotka znak przerywanej linii '\ n' lub EOF końca pliku przed odczytaniem ostatniego znaku, wówczas zwracane są tylko przeczytane znaki, łącznie z końcami linii. Możesz także użyć funkcji int fscanf (FILE * fp, const char * format,...), aby odczytać ciąg z pliku, ale przestaje ona czytać po napotkaniu pierwszej spacji i podziału wiersza.
żywy przykład
#włączać
Kiedy powyższy kod jest kompilowany i wykonywany, odczytuje pliki utworzone w poprzedniej sekcji, dając następujące wyniki:
1: To 2: testuje fprintf...
3: To jest testowanie fput...
Po pierwsze, metoda fscanf() odczytuje tylko This, ponieważ z tyłu napotkała spację. Następnie wywołaj funkcję fgets(), aby przeczytać pozostałą część do końca linii. Na koniec wywołaj fgets (), aby całkowicie przeczytać drugi wiersz.
Funkcja wejść/wyjść binarnych
Do wejścia i wyjścia binarnego wykorzystywane są następujące dwie funkcje:
rozmiar_t fread (void *ptr , rozmiar_t rozmiar_elementów , rozmiar_t liczba_elementów , PLIK *a_plik ); rozmiar_t fwrite (const void *ptr , rozmiar_t rozmiar_elementów , rozmiar_t liczba_elementów , PLIK *a_plik );
Obie funkcje służą do odczytu i zapisu bloków pamięci - zwykle tablic lub struktur.
Powyżej o odczytywaniu i zapisywaniu plików C należy do HDV Phoelectron Technology Ltd., zajmującej się oprogramowaniem. Oraz firma produkująca sprzęt związany z siecią (taki jak: ACONU/ komunikacjaONU/ inteligentnyONU/ błonnikONUitp.) zgromadziła potężny zespół programistów, dla każdego klienta dostosuj ekskluzywne wymagania, którzy tego potrzebują, a także pozwól, aby nasze produkty były bardziej inteligentne i zaawansowane.