Biblioteka standardowa » Stdio.h

Stderr

  • 2010-10-31 18:27
  • 0 komentarzy
  • 4804 odsłony
  • Oceń ten tekst jako pierwszy
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ż: