convertir un int en char*

convertir un int en char* - C - Programmation

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

Reply

Marsh Posté le 06-06-2007 à 13:08:55   

Reply

Marsh Posté le 06-06-2007 à 13:18:11    

Code :
  1. #include <stdio.h>
  2. main ()
  3. {
  4. char test[5];
  5. int a=5710;
  6. sprintf(test, "%i", a);
  7. printf("%s\n", test);
  8. }


 
comme ca peut-etre ?

Reply

Marsh Posté le 06-06-2007 à 13:57:17    

Je me permets de corriger :
 

Code :
  1. #include <stdio.h>
  2.  
  3. int main (void)
  4. {
  5.   char test[5];
  6.   int a=5710;
  7.     
  8.   snprintf(test, 5, "%i", a);
  9.   printf("%s\n", test);
  10.  
  11.   return 0;
  12. }

Reply

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¿Ã☺¿ "

Reply

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
ca m'affiche "12345├¿¦5¿Ã☺¿ "

 

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.


Message édité par Elmoricq le 06-06-2007 à 15:01:13
Reply

Marsh Posté le 06-06-2007 à 15:04:49    

oki =)

Reply

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

Reply

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).


---------------
Töp of the plöp
Reply

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)???

Reply

Marsh Posté le 06-06-2007 à 16:15:30    

Pourquoi tu ne connaitrais pas la taille du tableau que tu instancies ?


---------------
Töp of the plöp
Reply

Marsh Posté le 06-06-2007 à 16:15:30   

Reply

Marsh Posté le 06-06-2007 à 16:20:29    

Code :
  1. snprintf(test, sizeof a, "%i", a);


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.

Reply

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)

Reply

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...
il peut etre de 1 a 5 chiffres
donc mon tableau varie de taille
(merci de m aider C cool)


Donc 5, faut prendre le cas le plus souple.


---------------
Töp of the plöp
Reply

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)

Reply

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.

Reply

Marsh Posté le 06-06-2007 à 16:27:06    

ok ok merci bcp

Reply

Marsh Posté le 06-06-2007 à 16:33:29    

_darkalt3_ a écrit :

Donc 5, faut prendre le cas le plus souple.


5 ? [:bonux]

Reply

Marsh Posté le 06-06-2007 à 16:36:34    

ok 6 :o


---------------
Töp of the plöp
Reply

Marsh 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

Reply

Marsh Posté le 07-06-2007 à 10:20:45    

pitiperchistes a écrit :

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

 

c'est %d pour un entier

Message cité 1 fois
Message édité par _darkalt3_ le 07-06-2007 à 10:20:59

---------------
Töp of the plöp
Reply

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

Reply

Marsh Posté le 07-06-2007 à 10:26:59    

_darkalt3_ a écrit :

c'est %d pour un entier


%i marche tout aussi bien [:dawa]

Reply

Marsh Posté le 07-06-2007 à 10:29:56    

Elmoricq a écrit :

%i marche tout aussi bien [:dawa]


jamais utilisé [:joce]


---------------
Töp of the plöp
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed