Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation
  C

  convertir un int en char*

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

convertir un int en char*

n°1570880
pitiperchi​stes
Posté le 06-06-2007 à 13:08:55  profilanswer
 

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

mood
Publicité
Posté le 06-06-2007 à 13:08:55  profilanswer
 

n°1570893
minokitaro
Posté le 06-06-2007 à 13:18:11  profilanswer
 

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 ?

n°1570926
Elmoricq
Modérateur
Posté le 06-06-2007 à 13:57:17  profilanswer
 

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

n°1570952
minokitaro
Posté le 06-06-2007 à 14:27:42  profilanswer
 

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

n°1570994
Elmoricq
Modérateur
Posté le 06-06-2007 à 15:00:31  profilanswer
 

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
n°1570997
minokitaro
Posté le 06-06-2007 à 15:04:49  profilanswer
 

oki =)

n°1571060
pitiperchi​stes
Posté le 06-06-2007 à 15:51:25  profilanswer
 

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

n°1571068
_darkalt3_
Proctopathe
Posté le 06-06-2007 à 15:55:25  profilanswer
 

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
n°1571087
pitiperchi​stes
Posté le 06-06-2007 à 16:14:56  profilanswer
 

ok ok
et quand on ne connais pas la taille de son tableau je met un truc genre sizeof(char)???

n°1571090
_darkalt3_
Proctopathe
Posté le 06-06-2007 à 16:15:30  profilanswer
 

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


---------------
Töp of the plöp
mood
Publicité
Posté le 06-06-2007 à 16:15:30  profilanswer
 

n°1571097
matafan
Posté le 06-06-2007 à 16:20:29  profilanswer
 

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.

n°1571101
pitiperchi​stes
Posté le 06-06-2007 à 16:23:39  profilanswer
 

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)

n°1571103
_darkalt3_
Proctopathe
Posté le 06-06-2007 à 16:25:14  profilanswer
 

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
n°1571104
pitiperchi​stes
Posté le 06-06-2007 à 16:25:32  profilanswer
 

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)

n°1571106
Elmoricq
Modérateur
Posté le 06-06-2007 à 16:26:50  profilanswer
 

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.

n°1571107
pitiperchi​stes
Posté le 06-06-2007 à 16:27:06  profilanswer
 

ok ok merci bcp

n°1571114
Elmoricq
Modérateur
Posté le 06-06-2007 à 16:33:29  profilanswer
 

_darkalt3_ a écrit :

Donc 5, faut prendre le cas le plus souple.


5 ? [:bonux]

n°1571115
_darkalt3_
Proctopathe
Posté le 06-06-2007 à 16:36:34  profilanswer
 

ok 6 :o


---------------
Töp of the plöp
n°1571336
pitiperchi​stes
Posté le 07-06-2007 à 10:12:34  profilanswer
 

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

n°1571341
_darkalt3_
Proctopathe
Posté le 07-06-2007 à 10:20:45  profilanswer
 

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
n°1571343
pitiperchi​stes
Posté le 07-06-2007 à 10:22:24  profilanswer
 

j ai trouver j utilise la fonction sprintf() qui elle est compatible pour importer sur un micro de type 8051f020
merci a tous

n°1571349
Elmoricq
Modérateur
Posté le 07-06-2007 à 10:26:59  profilanswer
 

_darkalt3_ a écrit :

c'est %d pour un entier


%i marche tout aussi bien [:dawa]

n°1571353
_darkalt3_
Proctopathe
Posté le 07-06-2007 à 10:29:56  profilanswer
 

Elmoricq a écrit :

%i marche tout aussi bien [:dawa]


jamais utilisé [:joce]


---------------
Töp of the plöp
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  convertir un int en char*

 

Sujets relatifs
Traitement par lot, convertir les fichiers avec la mêm extentionconvertir fichier mdb en xls
convertir un real en string en delphiComment convertir un fichier pdf dynamique en statique sous java ?
Convertir des .xls en .pdfConvertir un fichier Excel en PDF
Convertir une réunion verbal en texteconvertir nombre négatif en positif
convertir format date en francaisconvertir std::string en char*
Plus de sujets relatifs à : convertir un int en char*


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR