Comment identifier quel type d'erreur a provoqué la valeur de retour à -1?C - Erreur de valeur de retour
Ex:
a = sscanf(ptr, "%s",output);
printf("%d",a);
sortie:
-1
Comment identifier quel type d'erreur a provoqué la valeur de retour à -1?C - Erreur de valeur de retour
Ex:
a = sscanf(ptr, "%s",output);
printf("%d",a);
sortie:
-1
De la documentation:
...and errno shall be set to indicate the error
. Utilisez perror()
pour voir quelle est l'erreur. En général, errno n'est applicable que s'il y a une erreur de lecture, qui ne s'applique pas à sscanf. -1 est simplement renvoyé lorsqu'il n'y a pas d'échecs de correspondance ou de conversions. Puisque votre chaîne fmt est juste '% s', la seule raison pour laquelle je peux penser à obtenir une valeur de retour -1 est si la chaîne pointée par ptr ne contient que des espaces.
Vous identifieriez l'erreur en vérifiant le contenu de ptr
et en vérifiant que output
est déclarée correctement. Les erreurs typiques sont ptr
ou output
étant NULL
.
Vous ne recevrez plus d'informations de diagnostic de sscanf
.
Le code d'erreur sera toujours 'EINVAL', ce qui ne vous dit pas grand-chose –