Détection des erreurs dans la conversion de chaîne en long à l'aide de strtol
En programmation C, la fonction strtol est couramment utilisée pour convertir une représentation sous forme de chaîne d'un entier long à sa valeur numérique. Cependant, l'utilisation de strtol seul ne fournit pas toujours une gestion suffisante des erreurs.
Problème :
Le code fourni illustre un scénario dans lequel le programme convertit correctement une chaîne en un entier long. , mais imprime également un message d'erreur indiquant "Impossible de convertir" malgré une conversion réussie. En effet, le programme suppose que si strtol convertit avec succès la chaîne, le deuxième paramètre (indiquant une chaîne restante) doit être NULL. Cependant, certaines conditions peuvent conduire à des chaînes restantes non NULL même avec une conversion réussie.
Solution :
Pour détecter avec précision les erreurs de strtol, envisagez les améliorations suivantes :
Fonction révisée :
bool parseLong(const char *str, long *val) { char *temp; bool rc = true; errno = 0; *val = strtol(str, &temp, 0); if (temp == str || *temp != '<pre class="brush:php;toolbar:false">if (parseLong(str, &value)) // Conversion successful else // Handle error
Utilisation :
Cette fonction révisée renvoie un booléen pour indiquer si la conversion a réussi ou non. Vous pouvez l'utiliser comme suit :
Remarques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!