Voulez Convertir Entier de Chaîne sans fonction itoa
je veux convertir int to char
* en C, sans l'aide de itoa()
fonction.
Parce que sur mon Linux, je itoa
fonction n'est pas là. je suis en utilisant ce code que j'ai trouvé de ici
Je veux exécuter cette fonction sur les systèmes Embarqués, qui sont l'utilisation de Linux.
Donc je suis à la recherche d', sans l'utilisation de itoa
.
Je dnt souhaitez utiliser sprintf
aussi parce que ses utilisations pour juste des impressions.
De sorte que tout le corps s'il vous plaît aidez-moi à trouvé ce problème.
Grâce
- Je dnt souhaitez utiliser sprintf aussi parce que ses utilisations pour juste des impressions Qui n'a pas de sens.
atoi
serait inutile, car il convertit en ASCII en entier, et non pas vice versa.- Vérifier mes mises à jour Question
- Pourquoi dites-vous que sprintf est utilisé pour les imprimer? il n'est pas vrai.
- J'ai une chaîne de caractères fonctions de gestion qui pourraient être utiles pour l'OP. Je peux poster un lien, mais je ne sais pas si c'est autorisé - peut-être considéré comme un spam? Veuillez informer.
- Généralement, les liens sont parfaitement bien, tant qu'ils sont pertinents.
- c'est pourquoi il a écrit
itoa
et pasatoi
- il a écrit (modifié) après le commentaire.
- sprints, ou mieux, snprintf - est le chemin à parcourir. Ce n'est PAS pour "l'impression", mais pour la construction de tampons de chaîne (chaînes C inclus - lorsque la valeur null).
InformationsquelleAutor user1089679 | 2012-04-03
Vous devez vous connecter pour publier un commentaire.
Chose est
snprintf
est la fonction parfaite pour cela:Ici est un extrait de simple que vous pouvez utiliser. Il y a de plus élégant et de moyens avancés, mais ce que le travail soit fait.
Dans les projets intégrés dans le passé, j'ai mesuré à environ 1000 fois plus efficace que sprintf(). Ce code est également MISRA-C conforme.
itoa()
de travail, ce qui implique des entiers signés. Je dirais pour les "Tiers" n'étant paramètre radix, mais compte tenu de lai_to_a()
de mise en œuvre de l'OP posté une réponse, je suppose qu'une partie de la MSitoa()
interface n'est pas important pour lui.- Je trouver une mise de ltid de cette lien. Peut-être qu'il vous aide à vous comme il l'a fait pour moi.
snprintf()
a pris 17.1 sec,i_to_a()
avec lemalloc()
et associés requisfree()
a pris de 18,7 sec,i_to_a()
modifié pour prendre un préaffectés tampon a pris 15.2 sec, et votreitoa()
a pris de 20,5 sec. La modification de votreitoa()
à ajouter un nombre négatif de soutien et radices jusqu'à 36 pour le rendre compatible avec le MS de la mise en œuvre heurté que légèrement 20,7 sec. Néanmoins, +1 pour être intéressante. 🙂uitoa()
à la place. Oh bien.J'ai trouvé la solution concernant ce..
Je suis Heureux et je veux ce qui m'attend.
main()
devrait libérer de la mémoire tampon, mais à mon humble avisi_to_a()
de ne pas allouer un tampon en premier lieu. Il n'y a aucune bonne raison, il ne faut pas se prendre une préaffectés tampon à la place. Les fonctions de l'utilitaire que de répartir et de retour tampons sont une odeur de code dans mon livre. Depuis qu'il est parti et ont divergé à partir de la MSitoa()
interface, il pourrait tout aussi bien ajouter un paramètre de durée, trop, et de vérifier la saturation de la mémoire tampon.i_to_a(0)
. Échoue pouri_to_a(INT_MIN)
.