STRERROR |
Chaine d'erreur |
---|---|
Langage C | string.h |
Syntaxe
char *strerror(int noerr); |
Paramètres
Nom | Description |
---|---|
noerr | Ce paramètre permet d'indiquer le code de l'erreur |
Description
Cette fonction pointe sur le message d'erreur correspondant à «noerr».
Algorithme
MODULE STRERROR(errnum) * Tableau contenant les messages d'erreur standard error_messages[] ← ( "Succès", * errnum = 0 "Opération non permis", * errnum = 1 "No such file or directory", * errnum = 2 * ... "Erreur inconnu" * Valeur par défaut si errnum est invalide ) * Nombre total de messages d'erreur connus max_error ← sizeof(error_messages) / sizeof(error_messages[0]) - 1 * Vérifier si errnum est valide SI (errnum ≥ 0) et (errnum ≤ max_error) ALORS RETOURNE error_messages[errnum] FIN SI * Retourner un message générique si le code d'erreur est inconnu RETOURNE "Erreur inconnu" |
Remarques
- Valeur de retour : strerror retourne un pointeur vers une chaîne de caractères statique contenant le message correspondant au code d'erreur errnum. Si le code d'erreur n'est pas valide, elle retourne généralement une chaîne générique comme "Erreur inconnu", bien que cela dépende de l'implémentation de la bibliothèque standard.
- Utilisation courante : La fonction est principalement utilisée pour diagnostiquer des erreurs après un appel système ou une fonction standard échouant. Par exemple, après un échec d'appel à open ou fopen, elle permet d'afficher un message clair basé sur errno.
- Chaîne de caractères statique : La chaîne retournée par strerror pointe vers un espace mémoire statique. Cela signifie que son contenu peut être écrasé par des appels ultérieurs à strerror. Si une copie de la chaîne est nécessaire, il est recommandé d'utiliser strdup ou une autre méthode pour la sauvegarder.
- Dépendance au système : Les messages retournés par strerror dépendent de l'implémentation du système et de la bibliothèque standard C utilisée. Par conséquent, un même code d'erreur peut produire des messages légèrement différents sur différents systèmes d'exploitation ou environnements.
- Alternative moderne : Sur les systèmes conformes à POSIX, une alternative plus sûre et réentrante à strerror est strerror_r, écrivant le message d'erreur dans un tampon fourni par l'utilisateur. Cela évite les problèmes liés aux chaînes de caractères statiques.
- Codes personnalisés : La fonction est conçue pour fonctionner avec des codes d'erreur standard définis par le système. Si des codes d'erreur personnalisés ou hors spécification sont passés, le résultat sera généralement une chaîne de caractères générique, mais il est possible que l'implémentation produise un comportement inattendu.
- Facilitation du débogage : En affichant des messages d'erreur clairs et descriptifs, strerror aide considérablement au débogage et au traitement des erreurs. Elle est souvent utilisée en combinaison avec perror, étant une autre fonction pour afficher des messages d'erreur, mais directement avec un préfixe pour identifier la source.
Exemple
Voici quelques exemples de valeur que retourne cette fonction :
Essayer maintenant !
on obtiendra le résultat semblable suivant :
0 (EZERO) = Error 01 (EINVFNC) = Invalid function number
1 (ENOFILE) = No such file or directory
Voir également
Langage de programmation - C - Référence de procédures et fonctions - perror
Langage de programmation - C++ - Référence de procédures et fonctions - strerror
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 734.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 257.
Dernière mise à jour : Mardi, le 28 juillet 2015