W tym przewodniku nauczymy się, jak wykonywać operacje wejścia / wyjścia (I / O) na pliku przy użyciu języka programowania C.
We / wy pliku C – spis treści
1. Otwieranie pliku
2. Czytanie pliku
3. Pisanie pliku
4. Zamknięcie pliku
5. Czytanie i zapisywanie ciągów do pliku
6. Czytanie i pisanie plików binarnych w C
Zanim szczegółowo omówimy każdą operację, weźmy prosty program w C:
Prosty program w C do otwierania, czytania i zamykania pliku
W powyższym programie otwieramy plik newfile.txt
w trybie r
, odczytując zawartość pliku i wyświetlając to na konsoli. pozwala szczegółowo zrozumieć każdą operację:
Otwieranie pliku
fopen()
służy do otwierania pliku.
Składnia:
FILE pointer_name = fopen ("file_name", "Mode");
pointer_name
może być dowolną wybór.
file_name
to nazwa pliku, który chcesz otworzyć. Podaj tutaj pełną ścieżkę, np. „C: \\ moje pliki \\ nowy plik.txt”.
Podczas otwierania pliku musisz określić tryb. Tryb, którego używamy do odczytu pliku to „r ”Czyli„ tryb tylko do odczytu ”.
na przykład:
FILE *fp;fp = fopen("C:\\myfiles\\newfile.txt", "r");
Adres pierwszego znaku jest przechowywany w pointer fp
.
Jak sprawdzić, czy plik otworzył się pomyślnie?
Jeśli plik nie otworzy się pomyślnie, wskaźnikowi zostanie przypisana wartość NULL, więc możesz napisać logikę w ten sposób :
Ten kod sprawdzi, czy plik został otwarty, czy nie. Jeśli plik się nie otworzy, wyświetli się komunikat o błędzie dla użytkownika.
..FILE fpr;fpr = fopen("C:\\myfiles\\newfile.txt", "r");if (fpr == NULL){ puts("Error while opening file"); exit();}
Różne tryby otwierania plików:
Plik jest otwierany za pomocą funkcji fopen()
, podczas otwierania można użyć dowolnego z następujących trybów zgodnie z wymaganiami.
Tryb „r”: Jest to tryb tylko do odczytu, co oznacza, że jeśli plik zostanie otwarty w trybie r, nie pozwoli ci na zapisywanie i modyfikowanie jego zawartości. Kiedy fopen()
pomyślnie otwiera plik, to zwraca adres pierwszego znaku pliku, w przeciwnym razie zwraca NULL.
Tryb „w”: To jest zapis tylko tryb. Funkcja fopen()
tworzy nowy plik, gdy określony plik nie istnieje i jeśli nie uda mu się otworzyć pliku, zwraca NULL.
Tryb ” a ”: Korzystanie z tego trybu Treść może zostać dołączona na końcu istniejącego pliku. Podobnie jak w trybie „w”, fopen()
tworzy nowy plik, jeśli nie istnieje. Po nieudanym otwarciu zwraca NULL.
Wskaźnik pliku wskazuje: ostatni znak pliku .
Tryb „r +”: Ten tryb jest taki sam jak tryb „r”, jednak możesz wykonywać różne operacje na pliku otwartym w tym trybie. Możesz czytać, zapisywać i modyfikować zawartość pliku otwarty w trybie „r +”.
Wskaźnik pliku wskazuje na: Pierwszy znak pliku.
Tryb „w +”: To samo co tryb „w” oprócz operacji, które można wykonać; plik może być odczytywany, zapisywany i modyfikowany w tym trybie.
Tryb „a +”: To samo co tryb „a”; możesz czytać i dołączać dane w pliku, jednak modyfikacja zawartości nie jest dozwolona w tym trybie.
Czytanie pliku
Aby odczytać plik, musimy go najpierw otworzyć za pomocą dowolnego trybu, na przykład jeśli chcesz tylko odczytać plik, a następnie otwórz go w trybie „r”. W oparciu o tryb wybrany podczas otwierania pliku, możemy wykonywać pewne operacje na pliku.
C Program do odczytu pliku
fgetc (): Ta funkcja odczytuje znak z bieżącej pozycji wskaźnika i po pomyślnym odczytaniu przesuwa wskaźnik do następnego znaku w pliku. Gdy wskaźniki dotrą do końca pliku , ta funkcja zwraca EOF (End of File). Użyliśmy EOF w naszym programie do określenia końca pliku.
Zapis do pliku
Aby zapisać plik, musi otworzyć plik w trybie, który obsługuje zapis. Na przykład, jeśli otworzysz plik w trybie „r”, nie będzie można zapisać pliku jako „r” jest trybem tylko do odczytu, który umożliwia tylko odczyt.
Przykład: Program w C do zapisu plik
Ten program prosi użytkownika o wprowadzenie znaku i zapisuje ten znak na końcu pliku. Jeśli plik nie istnieje, program utworzy plik o określonej nazwie i zapisze znak wejściowy do pliku.
Zamknięcie pliku
fclose(fp);
Funkcja fclose () służy do zamykania otwartego pliku. Jako argument musisz podać wskaźnik do pliku, który chcesz zamknąć.
Przykład pokazujący otwieranie, czytanie, zapisywanie i zamykanie operacji w C
Jak czytać / pisać (I / O) Ciągi znaków w plikach – fgets & fputs
Tutaj omówimy, jak czytać i zapisywać łańcuchy w pliku.
char *fgets(char *s, int rec_len, FILE *fpr)
s: Tablica znaków do przechowywania łańcuchów.
rec_len: Długość rekordu wejściowego.
fpr: Wskaźnik do pliku wejściowego.
Weźmy przykład:
Przykład odczytu łańcuchów z pliku w programowaniu w C
W powyższym przykładzie użyliśmy funkcji fgets w następujący sposób:
fgets(str, 10, fpr)
Tutaj str reprezentuje ciąg (tablicę znaków), w którym przechowujesz ciąg po odczytaniu go z pliku.
10 to długość ciągu, który musi być czytane za każdym razem.
fpr jest wskaźnikiem do pliku, który ma zostać odczytany.
Dlaczego użyłem if (fgets (str, 10, fpr) == NULL jako logiki określającej koniec pliku?
W powyższych przykładach użyliśmy ch == EOF, aby poznać koniec pliku. Tutaj użyliśmy tej logiki, ponieważ fgets zwraca NULL, gdy nie ma więcej rekordów dostępnych do odczytania .
Program w C – Zapisywanie ciągu znaków do pliku
int fputs ( const char * s, FILE * fpw );
char *s
– Tablica char.
FILE *fpw
– Wskaźnik (typu PLIK) do pliku, który ma zostać zapisany.
fputs przyjmuje dwa argumenty –
fputs(str, fpw)
str – str reprezentuje tablicę, w której przechowywany jest łańcuch.
fpw – wskaźnik FILE do pliku wyjściowego, w którym ma być zapisany rekord.
Warto zwrócić uwagę na fputs:
fputs domyślnie nie dodaje nowej linii po zapisaniu każdego rekordu, aby zrobić to ręcznie – po każdym zapisie do pliku możesz mieć następującą instrukcję.
fputs("\n", fpw);
C I / O PLIKU dla plików binarnych
Do tej pory nauczyliśmy się operacji na plikach tekstowych, a co jeśli pliki są binarne (np. plik .exe). Powyższe programy nie będą działać dla plików binarnych, jednak istnieje niewielka zmiana w obsłudze plików binarnych. Główną różnicą są tryby nazwy pliku &. Zrozummy to na przykładzie. Powiedzmy, że mam dwa pliki binarne bin1.exe & bin2.exe – chcę skopiować zawartość bin1.exe do bin2.exe:
Przykład: Czytanie i zapisywanie plików binarnych w C
Uwaga: tryby otwierania plików to „rb” i „wb” zamiast „r” & „w” ..