2 votes

Converting char array (c string) to _int64 in C

J'ai essayé cette fonction pour convertir une chaîne en _int64 mais ça n'a pas fonctionné :

_int64 lKey = _atoi64("a1234");

La valeur de lKey est toujours zéro et ne fonctionne pas sauf si la chaîne ne contient que des chiffres comme "1234"

J'ai lu des solutions utilisant le flux de chaînes C++ mais je veux écrire mon application en pur C

3voto

Constantinius Points 13708

La fonction fonctionne effectivement. Comme le document indique:

Chaque fonction renvoie la valeur __int64 produite en interprétant les caractères d'entrée comme un nombre. La valeur de retour est 0 pour _atoi64 si l'entrée ne peut pas être convertie en une valeur de ce type.

Il est donc nécessaire de s'assurer qu'une chaîne correcte est passée. Sinon, la valeur de retour sera toujours zéro. "a1234" n'est pas une chaîne correcte pour cette fonction et presque toute fonction de conversion en "râteau" échouera à l'analyser.

2voto

unwind Points 181987

Si vous considérez que votre nombre est hexadécimal, et que C99 est acceptable, vous voudrez peut-être essayer strtoull() à la place:

const unsigned long long value = strtoull(string, NULL, 16);

Ou avec auto-détection:

const unsigned long long value = strtoull(string, NULL, 0);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X