Funkcja Strerror 2 C

Funkcja Strerror 2 C
Występują błędy systemowe. Gdy tylko Twój program próbuje dotrzeć do systemu operacyjnego, coś idzie nie tak. Jeśli tak się stanie, funkcja zwraca -1, a twój kod musi polegać na naszym zaufanym errno, aby dowiedzieć się, co poszło nie tak i być może emitować pouczającego komunikatu o błędzie. Biblioteka C wywołuje char *strerror (int errnum), która tworzy odniesienie do ciągu składającego się z komunikatu o błędzie i przeszukuje tablicę wewnętrzną dla numeru błędu errNum. W zależności od kompilatora i platformy używanej do tworzenia, Strerror generuje ciągły błędy i przekształca ciąg komunikatów o błędach w numer błędu w ErrNum.

Wymagane są wartości errno z odpowiednimi błędami. Tej funkcji nie jest wytwarzany przez ciąg specyficzny dla lokalizacji. Biblioteka zawiera zmienne i funkcje mające na celu ułatwienie programowi dostarczenia szczegółowej awarii komunikatu o błędzie ze strony połączenia bibliotecznego w zwykłym formacie. Można uzyskać domyślny komunikat o błędzie dla określonego kodu błędu za pomocą metod STRERROR i możesz szybko uzyskać nazwę programu, który popełnił błąd za pomocą krótkiej nazwy programu zmiennej. Zbadajmy bardziej szczegółowo funkcję Strerror języka C.

Składnia funkcji Strerror w języku C

Używamy następującej składni funkcji strerror () w języku C. Ciąg, który wyjaśnia błąd, jest uzyskiwany za pomocą tej składni strerror.

char *strerror (int errnum);

Mamy tylko jeden argument, który przyjmuje funkcja Strerror. Argument to errnum: konkretny błąd, dla którego chcesz otrzymać komunikat o błędzie. Jeśli błąd środowiska wykonawczego jest nieznany, funkcja Strerror () zawiera nieznany komunikat o błędzie. W przeciwnym razie podaje odpowiedni ciąg opisu błędu.

Wartość Errno pozostaje niezmieniona, jeśli operacja się powiodła; Jeśli nie, jest to zmieniane na niezerową wartość. Ponadto funkcja Strerror generuje dwa błędy: Einval i Erange. Jeśli wartość Errnum jest nieprawidłowym numerem błędu, błąd einval jest rzucany. Gdy ciąg opisu błędu nie może być przechowywany w dostarczonej pamięci, wygenerowany błąd jest Erange.

Przykład 1

Tutaj wykazaliśmy wykorzystanie funkcji strerrora. Wykorzystamy to w naszym programie C, aby wygenerować błąd po wykonaniu. Omówmy implementację tej funkcji Strerror. Jesteśmy zobowiązani do uwzględnienia niektórych plików nagłówka biblioteki C, które są wymagane do tego wdrożenia kodu.

Najpierw wstawiliśmy stdio.H Plik nagłówka. Musimy dołączyć plik nagłówka stdio.H Aby dodać metody wejściowe/wyjściowe w naszym programie. Następnie ciąg.H jest dodawane po stdio.H Plik nagłówka. Nagłówek dla standardowej biblioteki C nazywa się ciągiem.H. Jednak nazwa jest nieco zwodnicza, ponieważ zawiera deklaracje makro, stałe i deklaracje metod i typów, są one używane do obsługi wielu funkcji obsługi pamięci oprócz zarządzania ciągami. Ponieważ jest to kod funkcji Strerror, aby uzyskać dostęp do tej funkcji, musimy zaimportować błąd.plik H dla tej funkcji.

Standardowa biblioteka języka programowania C zawiera plik nagłówka ERRNO.H. Definiuje makra z symbolem Errno do zgłaszania i pobierania okoliczności błędów (skrót dla „Numer błędu”). Niektóre funkcje biblioteczne, które wykrywają błędy, zapisują wartość, tak że numer błędu znajduje się w zmiennej Errno. Jedyne wartości, które przechowują funkcje biblioteczne, są większe niż zero.

Niezależnie od tego, czy zauważają błędy, jakakolwiek funkcja biblioteki może zmienić wartość zapisaną przed zwrotem. Większość funkcji zgłasza błędy, zwracając określoną wartość, ogólnie zerową dla metod zwracających wskaźniki i -1 dla metod zwracających liczby całkowite. Dzwoniący z kilku funkcji musi ustawić errno na 0 i zbadać go później, aby sprawdzić, czy znaleziono błąd.

#włączać
#włączać
#włączać
int main ()
Plik *fp;
fp = fopen („plik.txt "," r ");
if (fp == null)
printf („błąd: %s \ n”, strerror (errno));

zwrot (0);

Po włączeniu pliku nagłówka mamy główną deklarację funkcji. W sekcji funkcji głównej utworzyliśmy wskaźnik pliku „FP” z obiektem pliku. Plik przypisuje się nazwę pliku z trybem odczytu wewnątrz funkcji fopen, jeśli warunek jest zastosowany do zmiennej wskaźnika FP. Jeśli FP zostanie znalezione NULL, wówczas wykonywana instrukcja PrintF, która ma funkcję strerror. Funkcja Strerror bierze Errno jako argument i zwraca to w formie ciągów.

Ponieważ próbujemy otworzyć plik, który nie jest obecny, skompilujmy i uruchommy wspomniany powyżej program, co spowoduje następujący wynik:

Przykład 2

Ponieważ poprzedni kod generuje sam ciąg błędu, gdy to się stanie. Możemy również sami zdefiniować błąd łańcucha. Musimy najpierw zdefiniować ciąg błędu z errno.

int main (int argc, char *argv [])

Plik *fout;
int last_error = 0;
if ((fout = fopen (argv [1], „w”)) == null)
last_error = errno;
errno = 0;

if (last_error)
fprintf (Stderr, „Fopen: nie mógł otworzyć %s do pisania: %s”,
argv [1], strerror (last_error));
fputs („Kontynuuj… \ n”, stderr);

return exit_success;

Wstawiliśmy kilka plików nagłówka dla tego przykładowego kodu i każdy ma swoją funkcjonalność i cel. Następnie ustaliliśmy główną funkcję. Fout jest tworzony jako zmienna wskaźnika, a Last_error jest również zadeklarowany jako zmienna, która jest przypisana wartością 0. Zagnieżdżone, jeśli wykorzystywane są tutaj wyrażenia. Jeśli warunek Last_ERRROR jest dopasowany do Errorno, możemy określić Last_error w funkcji Strerror.

Błąd ciągu zdefiniowany przez użytkownika jest wytwarzany po wykonaniu poprzedniego kodu, jak pokazano poniżej:

Wniosek

Głównym celem przewodnika jest edukowanie Cię o Strerror w języku C. Wykorzystując błąd.H Plik nagłówka w kodzie, możemy łatwo uzyskać dostęp do funkcji Strerror. Składnia jest bardzo łatwa do zrozumienia. Tutaj omówiliśmy dwa przykłady, które wyjaśnią wykorzystanie strerrora w języku C. Możemy również utworzyć lub zdefiniować błąd w błędach ciągów, który chcemy wyświetlić.