C Language                
            Obsługa błędów
        
        
            
    Szukaj…
Składnia
- #include <errno.h>
- int errno; / * zdefiniowano implementację * /
- #include <string.h>
- char * strerror (int errnum);
- #include <stdio.h>
- void perror (const char * s);
Uwagi
 Pamiętaj, że errno niekoniecznie jest zmienną, ale składnia jest jedynie wskazówką, jak można ją zadeklarować. W wielu nowoczesnych systemach z interfejsami wątków errno to niektóre makro, które rozwiązuje obiekt lokalny dla bieżącego wątku. 
errno
Gdy standardowa funkcja biblioteki zawiedzie, często ustawia errno na odpowiedni kod błędu. Norma C wymaga ustawienia co najmniej 3 wartości dla errno:
| Wartość | Znaczenie | 
|---|---|
| EDOM | Błąd domeny | 
| ZMIEŃ | Błąd zakresu | 
| EILSEQ | Nielegalna, wielobajtowa sekwencja znaków | 
strerror
 Jeśli perror nie jest wystarczająco elastyczny, możesz uzyskać czytelny dla użytkownika opis błędu, wywołując strerror z <string.h> . 
int main(int argc, char *argv[])
{
    FILE *fout;
    int last_error = 0;
    if ((fout = fopen(argv[1], "w")) == NULL) {
        last_error = errno;
         /* reset errno and continue */
         errno = 0;
    }
    /* do some processing and try opening the file differently, then */
    if (last_error) {
        fprintf(stderr, "fopen: Could not open %s for writing: %s", 
                argv[1], strerror(last_error));
        fputs("Cross fingers and continue", stderr);
    }
    /* do some other processing */
    return EXIT_SUCCESS;
}
perror
 Aby wydrukować czytelny komunikat o błędzie na stderr , wywołaj perror z <stdio.h>. 
int main(int argc, char *argv[])
{
   FILE *fout;
   if ((fout = fopen(argv[1], "w")) == NULL) {
      perror("fopen: Could not open file for writing");
      return EXIT_FAILURE;
   }
return EXIT_SUCCESS;
}
 Spowoduje to wydrukowanie komunikatu o błędzie dotyczącego bieżącej wartości errno . 
Modified text is an extract of the original Stack Overflow Documentation
        Licencjonowany na podstawie CC BY-SA 3.0
        Nie związany z Stack Overflow