« Programmation C/Erreurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
→‎Affichage d'un message d'erreur : Ajout fonction perror
Thierry46 (discussion | contributions)
→‎Exemple : Modification de l'exemple
Ligne 54 :
#include <string.h> /* strerror() */
#include <errno.h> /* errno */
 
static void teste(const char *nombre)
{
unsigned long res;
/* On réinitialise errno */
/* On réinitialise errno */
errno = 0;
 
/* Appel de strtoul : conversion d'une chaine en un entier unsigned long*/
unsigned long res = strtoul(nombre, NULL, 10);
 
/* On détecte une erreur de strtoul quand elle renvoie ULONG_MAX _et_
* que errno est non nul. En effet, si on lui passe en entrée la
Ligne 71 ⟶ 73 :
{
/* Il y a eu une erreur ! */
printf(void)fprintf(stderr, "Impossible de convertir le nombre '%s': %s.\n",
nombre, strerror(errno));
}
else
{
(void)printf("La conversion a été effectuée, et la valeur est: %lu\n", res);
}
}
 
int main(void)
{
/* 2 puissance 8 : sera toujours accepte */
teste("256");
 
/* 2^64 - 1 : peut echouer suivant la machine */
teste("18446744073709551615");
return 0EXIT_SUCCESS;
}
</source>