Stderr
FILE *stderr;
Standardowe wyjście błędów. Wskaźnik do jednego z trzech plików wyjść standardowych (pozostałe to stdout oraz stdin).
<justify> Standardowe wyjście błędów jest domyślnym miejscem przeznaczenia dla komunikatów o błędach oraz ostrzeżeniach. Podobnie, jak stdout, zazwyczaj związany jest z wyjściem na konsolę (ekran).</justify>
<justify>Strumień stderr może zostać użyty jako argument wszędzie tam, gdzie oczekiwany jest wskaźnik do pliku, np. w funkcji fputs albo fprintf.</justify>
<justify> Oba wyjścia standardowe stdout oraz stderr są powiązane z tym samym wyjściem na konsolę, jednak aplikacje rozróżniają co ma zostać podane na wyjście stdout, a co na stderr, nawet jeśli jedno z nich jest przekierowane. Przykładem może tu być aplikacja, która wypisuje wyniki swojego działania w konsoli (na wyjście stdout), a przypadkowe błędy, poprzez przekierowanie strumienia stderr wypisuje do pliku.</justify>
<justify>Wspominane przekierowanie strumienia stderr można wykonać używając funkcji freopen:</justify>
#include <stdio.h> int main (int argc, char* argv[]) { freopen ("bledy.log","w",stderr); perror ("Ten blad nie zostanie wyswietlony, tylko zapisany bezposrednio do pliku"); fclose (stderr); return 0; }
Przykład
#include <stdio.h> int main(int argc, char* argv[]) { FILE *plik; plik = fopen ("clients.dat", "r"); /* otworzenie pliku do odczytu */ if ( !plik ) { /* w przypadku, gdy nie udało się otworzyć pliku... */ fprintf (stderr, "Blad przy otwieraniu pliku: %s", strerror (errno)); /*... wyświetla błąd na wyjście stderr */ return 1; } /* {operacje na pliku} */ fclose (plik); /* zamknięcie pliku */ return 0; }
W przypadku niepowodzenia (plik nie zostanie otworzony z pewnych względów), funkcja wyświetli błąd w stylu:
Blad przy otwieraniu pliku: No such file or directory
Zobacz też: