PODSTAWOWA OBSŁUGA PLIKÓW 99 Pliki a strumienie Można zauważyć, że do zapisu do pliku używamy funkcji fprintf, która wygląda bardzo podobnie do printf — jedyną różnicą jest to, że w fprintf musimy jako pierwszy argument podać identyfikator pliku. Nie jest to przypadek — obie funkcje tak naprawdę robią tak samo. Używana do wczytywania danych z klawiatury funkcja scanf też ma swój odpowiednik wśród funkcji operujących na plikach — jak nietrudno zgadnąć, nosi ona nazwę fscanf. W rzeczywistości język C traktuje tak samo klawiaturę i plik — są to źródła da- nych, podobnie jak ekran i plik, do których możne dane kierować. Jest to myślenie typowe dla systemów typu UNIX, jednak dla użytkowników przyzwyczajonych do sys- temu Windows albo języków typu Pascal może być to co najmniej dziwne. Nie da się ukryć, że między klawiaturą i plikiem na dysku zachodzą podstawowe różnice i dostęp do nich odbywa się inaczej — jednak funkcje języka C pozwalają nam o tym zapo- mnieć i same zajmują się szczegółami technicznymi. Z punktu widzenia programisty, urządzenia te sprowadzają się do nadanego im identyfikatora. Uogólnione pliki nazywa się w C strumieniami . Każdy program w momencie uruchomienia “otrzymuje” od razu trzy otwarte stru- mienie: • stdin (wejście) • stdout (wyjście) • stderr (wyjście błędów) (aby z nich korzystać należy dołączyć plik nagłówkowy stdio.h) Pierwszy z tych plików umożliwia odczytywanie danych wpisywanych przez użyt- kownika, natomiast pozostałe dwa służą do wyprowadzania informacji dla użytkownika oraz powiadamiania o błędach. 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); Obsługa błędów Jeśli nastąpił błąd, możemy się dowiedzieć o jego przyczynie na podstawie zmiennej errno zadeklarowanej w pliku nagłówkowym errno.h. Możliwe jest też wydrukowanie komunikatu o błedzie za pomocą funkcji perror. Na przykład używając:
... zobacz całą notatkę
Komentarze użytkowników (0)