convertir un int en char* - C - Programmation
Marsh Posté le 06-06-2007 à 13:18:11
Code :
|
comme ca peut-etre ?
Marsh Posté le 06-06-2007 à 14:27:42
sous visual studio il reconnait pas le snprintf() pourquoi ?
sous code block si j'entre "12345" dans la variable a
ca m'affiche "12345├¿¦5¿Ã☺¿ "
Marsh Posté le 06-06-2007 à 15:00:31
minokitaro a écrit : 1. sous visual studio il reconnait pas le snprintf() pourquoi ? 2. sous code block si j'entre "12345" dans la variable a |
1. c'est C99, y a p'têt une option pour l'activer ou une MAJ à faire ou autre j'sais pas, je connais pas visual studio.
2. normal, le but de snprintf() c'est justement de contrôler que ce que tu mets dans le buffer de réception n'est pas plus grand que ce qu'il peut contenir, et "test" ne peut contenir que 4 caractères + 1 caractère de fin de chaîne. La fonction sprintf() ne fait aucun contrôle de ce genre.
Marsh Posté le 06-06-2007 à 15:51:25
merci elmoricq
j ai une petite precision a te demander du marque :
#
int main (void)
#
{ char test[5];
int a=5710;
snprintf(test, 5, "%i", a);
printf("%s\n", test);
return 0;
}
dans le snprintf est il obligatoire de mettre la taille du mon char *
car j utilise un tableau que je rempli et vide svt avec des mots de taille differente
merci encore
Marsh Posté le 06-06-2007 à 15:55:25
c'est la taille du buffer à ne pas dépasser, elle est donc ici fixe.
Et oui, puisque c'est dans le prototype de snprintf (c'en est même l'interêt).
Marsh Posté le 06-06-2007 à 16:14:56
ok ok
et quand on ne connais pas la taille de son tableau je met un truc genre sizeof(char)???
Marsh Posté le 06-06-2007 à 16:15:30
Pourquoi tu ne connaitrais pas la taille du tableau que tu instancies ?
Marsh Posté le 06-06-2007 à 16:20:29
Code :
|
A supposer bien sûr que a est un tableau, pas un pointeur. Si c'est un pointeur et que tu alloues la zone avec malloc... Et bien tu connais la taille de la zone que tu as alloué.
Par définition, sizeof(char) vaut 1.
Marsh Posté le 06-06-2007 à 16:23:39
ben mon int est un nombre qui correspond a la conversion d un CAN...
il peut etre de 1 a 5 chiffres
donc mon tableau varie de taille
(merci de m aider C cool)
Marsh Posté le 06-06-2007 à 16:25:14
pitiperchistes a écrit : ben mon int est un nombre qui correspond a la conversion d un CAN... |
Donc 5, faut prendre le cas le plus souple.
Marsh Posté le 06-06-2007 à 16:25:32
ben mon int est un nombre qui correspond a la conversion d un CAN...
il peut etre de 1 a 5 chiffres
donc mon tableau varie de taille
(merci de m aider C cool)
Marsh Posté le 06-06-2007 à 16:26:50
Ton tableau ne varie pas de taille, s'il est de taille fixe tu dois le créer de sorte à ce qu'il puisse contenir le plus grand nombre possible.
Donc, si au maximum ton nombre mesure 5 caractères de long, tu dois faire un tableau de taille 6 au minimum. Et donc tu connais ta taille.
Et comme le dit _darkalt3_, si tu crées le tableau dynamiquement (avec malloc par exemple), alors là aussi tu connais la taille.
Donc, dans les deux cas, tu sais gérer la limite de ton buffer.
Marsh Posté le 06-06-2007 à 16:33:29
ReplyMarsh Posté le 07-06-2007 à 10:12:34
lorsque j ecris
snprintf(test, 6, "%i", a);
mon compilateur me dit missing function-prototype en gros il me manque des parametres.
je suis allé voir la declaration du snprintf et je ne comprend pas ce qu il manque.
quelqu'un peut il m aider?
merci d avance
Marsh Posté le 07-06-2007 à 10:20:45
pitiperchistes a écrit : lorsque j ecris |
c'est %d pour un entier
Marsh Posté le 07-06-2007 à 10:22:24
j ai trouver j utilise la fonction sprintf() qui elle est compatible pour importer sur un micro de type 8051f020
merci a tous
Marsh Posté le 07-06-2007 à 10:26:59
ReplyMarsh Posté le 07-06-2007 à 10:29:56
Reply
Marsh Posté le 06-06-2007 à 13:08:55
tout est dans le titre
je cherche a convertir un int ( qui est du type nombre = 5710) en un tabelau de char du type ( char *nombre_char = "5710" )
y a t il une fonction qui permet de le faire ou qq1 a til dja eu ce souci et connais un code me permettant de le faire
merci d avance