
Autor: 21.12.2023
Język C - operacje na plikach
Język C posiada wbudowane funkcje do wykonywania podstawowych operacji na plikach. Za ich pomocą można plik otworzyć, zapisać do niego dane, odczytać jego zawartość itp. W tym artykule pokażemy, jak te podstawowe operacje możesz wykonać.
Standardowe operacje na plikach
Zanim zaczniemy pracę, warto wspomnieć o ważnej rzeczy. Standardowo używamy operacji plikowych w takiej kolejności: najpierw plik otwieramy, wykonujemy operacje (odczyt lub zapis) i na końcu plik zamykamy. Zapamiętaj tą kolejność.
Otwieranie i zamykanie pliku
Zacznijmy od najważniejszej operacji czyli od otwierania pliku. Musimy go otworzyć aby można było na nim pracować. Tak wygląda kod:
#include <stdio.h>
int main() {
FILE *file;
file = fopen("my_file.txt", "r");
fclose(file);
return 0;
}
Zwróć uwagę na najważniejsze elementy.
- FILE *file; to jest wskaźnik do pliku. Nazwaliśmy go po prostu file.
- file = fopen("my_file.txt", "r"); wywołujemy funkcję odczytującą plik. Mamy parametr “r” czyli otwieramy plik w trybie do odczytu. Nasz plik nazywa się my_file.txt.
- fclose(file); tu zamykamy nasz plik. Zawsze warto zamykać plik po zakończeniu wszystkich operacji, aby zwolnić zasoby pamięci.
Na chwilę obecną nasz kod nie robi zbyt wiele. Po prostu otwiera i chwilę potem zamyka plik.
Otwieranie i zamykanie pliku
Teraz spróbujemy zapisać dane do naszego pliku. Popatrz na zmodyfikowany kod:
#include <stdio.h>
int main() {
FILE *file;
file = fopen("my_file.txt", "w");
fprintf(file, "To jest tekst, który zostanie zapisany do pliku.\n");
fclose(file);
return 0;
}
Zwróć uwagę na parametr funkcji fopen(). Tym razem jest to “w” (“write”) - plik musimy otworzyć w trybie umożliwiającym zapis. Nowy element w kodzie to funkcja fprintf(), za pomocą której zapisujemy tekst do pliku. Na końcu dodajemy znak przejscia do nowej linii czyli \n. Po zakończeniu operacji zapisu, plik zostanie zamknięty za pomocą fclose().
Odczytywanie pliku
Skoro potrafisz już zapisywać dane do pliku, to teraz spróbujemy go odczytać. Oto nasz nowy kod:
#include <stdio.h>
int main() {
FILE *file;
file = fopen("my_file.txt", "r");
char bufor[100];
while (fgets(bufor, sizeof(bufor), file) != NULL) {
printf("%s", bufor);
}
fclose(file);
return 0;
}
A tak wygląda rezultat zwrócony przez nasz kod:
To jest tekst, który zostanie zapisany do pliku
Nie ma tu nic zaskakującego - odczytany został tekst z pliku, który zapisaliśmy w poprzednim przykładzie. Teraz przeanalizujemy nowe operacje odczytu.
- Plik otwieramy w trybie do odczytu, czyli “r”
- Tworzymy tablicę znaków o nazwie bufor, która będzie przechowywać odczytaną zawartość pliku. Jej rozmiar to 100.
- Za pomocą pętli while, czytamy plik wiersz po wierszu.
- Funkcja fgets() czyta wiersz z pliku (czyli file) i umieszcza odczytane dane w tablicy bufor.
- Mamy warunek zakończenia pętli: != NULL. Pętla działa dopóki są jakieś wiersze do odczytania (dopóki nie pojawi się wartość NULL) .
- Dany wiersz wyprowadzamy na ekran za pomocą funkcji printf("%s", bufor).
Oczywiście plik za końcu jest zamykany - to już dobrze wiesz.