C/Czytanie i pisanie do plików: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m →‎Identyfikacja pliku: poprawki w stylu i interpunkcji
→‎Podstawowa obsługa plików: drobne poprawki techniczne
Linia 13:
* niskopoziomowa.
 
Nazwy funkcji z pierwszej grupy zaczynają się od litery "f" (np. fopen(), fread(), fclose()), a identyfikatorem pliku jest [[C/Wskaźniki|wskaźnik]] na [[C/Typy złożone#Struktury|strukturę]] typu FILE. Owa struktura to pewna grupa zmiennych, która przechowuje dane o danym pliku - jak na przykład aktualną pozycję w nim. Szczegółami nie musisz się przejmować, funkcje biblioteki standardowej same zajmują się wykorzystaniem struktury FILE,. programistaProgramista może więc zapomnieć, czym tak naprawdę jest struktura FILE i traktować taką zmienną jako "uchwyt", identyfikator pliku.
 
Druga grupa to funkcje typu read(), open(), write() i close().
Linia 46:
</source>
 
Teraz omówimy najważniejsze elementy programu. Jak już było wspomniane wyżej, do identyfikacji pliku używa się wskaźnika na strukturę <tt>FILE</tt> (czyli <tt>FILE *</tt>). Funkcja '''fopen''' zwraca ów wskaźnik w przypadku poprawnego otwarcia pliku, bądź też NULL, gdy plik nie może zostać otwarty. Pierwszy argument funkcji to nazwa pliku, natomiast drugi to ''''tryb dostępu''' - '''w''' oznacza "write" (pisanie);. zwróconyZwrócony "uchwyt" do pliku będzie mógł być wykorzystany jedynie w funkcjach zapisujących dane. I odwrotnie, gdy otworzymy plik podając tryb '''r''' ("read", czytanie), będzie można z niego jedynie czytać dane. Funkcja fopen została dokładniej opisana w odpowiedniej [[C/fopen|części]] rozdziału o bibliotece standardowej.
Jak zatem uprościć nazwę typu <tt>FILE*</tt>? Używając [[C/Typy złożone|typedef]]:
<source lang="c">
Linia 70:
 
Warto tutaj zauważyć, że konstrukcja:
fprintf (stdout, "Hej, ja działam!") ;
jest równoważna konstrukcji:
printf ("Hej, ja działam!");
Podobnie jest z funkcją scanf():.
fscanf (stdin, "%d", &zmienna);
działa tak samo jak :
scanf("%d", &zmienna);
 
Linia 118:
}
 
Tym razem skorzystaliśmy już z dużo większego repertuaru funkcji. Między innymi można zauważyć tutaj funkcję [[C/fputc|fputc()]], która umieszcza pojedynczy znak w pliku. Ponadto w wyżej zaprezentowanym programie została użyta stała EOF, która reprezentuje koniec pliku (ang. ''End Of File''). Powyższy program otwiera plik, którego nazwa przekazywana jest jako pierwszy argument programu, a następnie kopiuje dane z wejścia programu (''stdin'') na wyjście (''stdout'') oraz do utworzonego pliku (identyfikowanego za pomocą fp). Program robi to dotądtak długo, aż naciśniemy kombinację klawiszy Ctrl+D (w systemach Unixowych) lub Ctrl+Z(w Windows), która wyśle do programu informację, że skończyliśmy wpisywać dane. Program wyjdzie wtedy z pętli i zamknie utworzony plik.
 
== Rozmiar pliku ==