convertir en int en char* en C standard (sans ltid)
J'ai déclaré et initialisé deux variables comme indiqué ci-dessous:
int a=5;
char* str;
str = (char*)calloc(255, sizeof(char));
Je veux convertir le int en char* en standard C. je ne peut pas utiliser la fonction de conversion à partir de C++ tels ltid.
J'utilise Ubuntu 11.10
Pourquoi ne pouvez-vous pas utiliser ltid?
Qu'entendez-vous par la norme C de la fonction? Il est présent à <stdlib.h>.. voulez-vous dire que vous ne pouvez pas utiliser les comprend? (viens de vérifier, oui, ltid n'est pas standard)
il n'est pas présent dans
De vérifier la référence, la fonction à utiliser est
itoa
n'est pas un standard C de la fonction et n'est pas disponible sur Linux.Qu'entendez-vous par la norme C de la fonction? Il est présent à <stdlib.h>.. voulez-vous dire que vous ne pouvez pas utiliser les comprend? (viens de vérifier, oui, ltid n'est pas standard)
il n'est pas présent dans
<stdlib.h>
sur toutes les plates-formes et il n'est pas présent dans le C standard.De vérifier la référence, la fonction à utiliser est
sprintf
comme ThiefMaster a suggéré. Merci pour l'explication.OriginalL'auteur Alexandru N. Onea | 2012-01-07
Vous devez vous connecter pour publier un commentaire.
Tout d'abord,
itoa
n'est pas une C++ chose.Vous pouvez simplement utiliser
sprintf
:Dans une application réelle, vous aurez envie d'utiliser
snprintf
si pour supprimer le risque d'un débordement de la mémoire tampon:Et 15 caractères sont assez pour stocker un entier.
sizeof(char)
est par définition égal à 1, etcalloc
est exagéré. Aussi, le casting de la suite decalloc
est inutile. Justestr = malloc(BUFSIZE)
suffirait.Ouais, juste copié de sa question. Cependant, il ya beaucoup de gens qui les utilisent toujours calloc à la place de malloc, même si l'un des arguments est
1
car il zéros de la mémoire et permet d'économiser les tracas de faire un memset après l'attribution.assez juste, mais étant donné que vous avez été faire des corrections déjà, je que vous pourriez vous voulez les ajouter en tant que bien 🙂
15 personnages n'est pas assez longtemps sur la plupart des plates-formes 64 bits, il pourrait être bon de déposer l'habitude de penser à long == int.
La réponse est correcte, mais je ne parle pas de l'existence de
sprintf
. Il est bon que vous suggérersnprintf
pour une application réelle, mais pourquoi ne pas l'utiliser pour "irréel" que de bien?OriginalL'auteur ThiefMaster