Strerror 2 C -Funktion

Strerror 2 C -Funktion
Systemfehler treten auf. Sobald Ihr Programm versucht, das Betriebssystem zu erreichen, geht etwas schief. In diesem Fall gibt die Funktion -1 zurück, und Ihr Code muss sich auf unser vertrauenswürdiges Errno verlassen, um herauszufinden, was schief gelaufen ist, und möglicherweise eine lehrreiche Fehlermeldung abgibt. Die C -Bibliothek ruft char *Strerror (int errnum) auf, die einen Verweis auf eine Zeichenfolge erzeugt, die aus der Fehlermeldung besteht, und durchsucht ein internes Array für die Fehlernummer errnum. Je nach Compiler und Plattform, die für die Entwicklung verwendet werden.

Errno -Werte mit ordnungsgemäßen Errnums sind erforderlich. Eine lokalspezifische Fehlermeldungszeichenfolge wird von dieser Funktion nicht erstellt. Die Bibliothek enthält Variablen und Funktionen, die es Ihrem Programm einfach machen sollen. Sie können die Standardfehlermeldung für einen bestimmten Fehlercode mit den Strerror -Methoden abrufen und schnell den Namen des Programms abrufen. Lassen Sie uns die Strerrorfunktion der C -Sprache genauer untersuchen.

Syntax der Strerrorfunktion in der C -Sprache

Wir verwenden die folgende Syntax der Funktion strerror () in der C -Sprache. Die Zeichenfolge, die den Fehler erklärt, wird unter Verwendung dieser Strerror -Syntax erhalten.

char *Strerror (int errnum);

Wir haben nur ein Argument, das die Strerrorfunktion nimmt. Das Argument ist Errnum: ein spezifischer Fehler, für den Sie die Fehlermeldung empfangen möchten. Wenn der Laufzeitfehler unbekannt ist, liefert die Funktion Strerror () eine unbekannte Fehlermeldung. Andernfalls gibt es die relevante Fehlerbeschreibungszeichenfolge an.

Der Wert von ERRNO bleibt unverändert, wenn die Operation erfolgreich ist. Wenn nicht, wird es in einen Wert ungleich Null geändert. Darüber hinaus erzeugt die Strerrorfunktion zwei Fehler, Einval und Erange. Wenn der Wert des Errnum eine ungültige Fehlernummer ist, wird der Einval -Fehler geworfen. Wenn die Fehlerbeschaffungszeichenfolge im bereitgestellten Speicher nicht gespeichert werden konnte, ist der generierte Fehler erange.

Beispiel 1

Hier haben wir die Verwendung der Strerrorfunktion demonstriert. Wir werden dies in unserem C -Programm verwenden, um den Fehler bei der Ausführung zu generieren. Lassen Sie uns die Implementierung für diese Strerrorfunktion erörtern. Wir müssen einige Bibliotheks -Header -Dateien von C einbeziehen, die für diese Code -Implementierung erforderlich sind.

Zuerst haben wir das Stdio eingefügt.H Header -Datei. Wir müssen die Header -Datei Stdio einschließen.H Fügen Sie die Eingangs-/Ausgangsmethoden in unserem Programm hinzu. Dann die Zeichenfolge.H wird nach dem Stdio hinzugefügt.H Header -Datei. Der Header für die C -Standardbibliothek heißt String.H. Der Name ist jedoch etwas irreführend, da er Makroerklärungen, Konstanten und Methoden und Typen umfasst. Diese werden zum Umgang mehrerer Speicherbearbeitungsfunktionen verwendet, zusätzlich zum Verwalten von Zeichenfolgen. Da dies der Code der Strerror -Funktion ist, um auf diese Funktion zuzugreifen, müssen wir einen Fehler importieren.H -Datei für diese Funktion.

Die Standardbibliothek der C -Programmiersprache enthält die Header -Datei errno.H. Es definiert Makros mit dem Errno -Symbol, um Fehlerbedingungen zu melden und abzurufen (Abkürzung für „Fehlernummer“). Bestimmte Bibliotheksfunktionen, die Fehler erkennen. Die einzigen Werte, die Bibliotheksfunktionen speichern.

Unabhängig davon, ob sie Fehler bemerken, kann jede Bibliotheksfunktion den Wert ändern, der vor der Rückkehr gespeichert wird. Die Mehrheit der Funktionen meldet Fehler, indem ein bestimmter Wert zurückgegeben wird, im Allgemeinen für Methoden, die Zeiger zurückgeben. Der Anrufer einiger Funktionen muss Errno auf 0 festlegen und untersuchen, um zu überprüfen, ob ein Fehler gefunden wurde.

#enthalten
#enthalten
#enthalten
int main ()
Datei *fp;
fp = fopen ("Datei.txt "," r ");
if (fp == null)
printf ("Fehler: %s \ n", Strerror (errno));

return (0);

Nach der Einbeziehung der Header -Datei haben wir die Hauptfunktionserklärung. Im Abschnitt "Hauptfunktion" haben wir den Dateizeiger "FP" mit dem Dateiobjekt erstellt. Den Datei wird ein Dateinamen mit dem Lesemodus in der FOPEN -Funktion zugewiesen, wenn die Bedingung auf die FP -Zeigervariable angewendet wird. Wenn die FP null gefunden wird, wird die Printf -Anweisung ausgeführt, die die Strerrorfunktion hat. Die Strerrorfunktion nimmt das Errno als Argument an und gibt diese in einer String -Form zurück.

Da wir versuchen, eine nicht vorhandene Datei zu öffnen, lasst uns das oben erwähnte Programm kompilieren und ausführen, was zu dem folgenden Ergebnis führt:

Beispiel 2

Da der vorherige Code die Fehlerzeichenfolge selbst generiert, wenn dies auftritt. Wir können den String -Fehler auch selbst definieren. Wir müssen zuerst die Fehlerzeichenfolge mit dem Errno definieren.

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

Datei *fout;
int last_error = 0;
if ((fout = fopen (argv [1], "w")) == null)
last_error = errno;
errno = 0;

if (last_error)
Fprintf (Stderr, "Fopen: konnte nicht %s für das Schreiben eröffnen: %s",
argv [1], Strerror (last_error));
fputs ("weiter ... \ n", stderr);

return exit_success;

Wir haben mehrere Header -Dateien für diesen Beispielcode eingefügt und jeder hat seine Funktionalität und ihren Zweck. Dann haben wir die Hauptfunktion festgestellt. Der Fut. Die verschachtelten, wenn Ausdrücke hier verwendet werden. Wenn die last_errror -Bedingung mit dem Erorno übereinstimmt.

Der vom Benutzer definierte String -Fehler wird erstellt, wenn der vorherige Code ausgeführt wird, wie unten gezeigt:

Abschluss

Der Hauptzweck des Führers ist es, Sie über den Strerror in der C -Sprache aufzuklären. Durch die Verwendung des Fehlers.H Header -Datei im Code können wir problemlos auf die Strerrorfunktion zugreifen. Die Syntax ist sehr leicht zu verstehen. Hier haben wir zwei Beispiele besprochen, die die Verwendung des Strerrors in der C -Sprache erklären werden. Wir können den Fehler auch in den Zeichenfolgenfehler erstellen oder definieren, den wir anzeigen möchten.