Convertir un int en char

infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012 - 20 févr. 2007 à 16:44
simaxe25 Messages postés 13 Date d'inscription vendredi 7 janvier 2005 Statut Membre Dernière intervention 16 juillet 2008 - 28 nov. 2007 à 02:48
Bonjour,
 
Quelqu'un a une idée pour convertir un entier (int) en caractère de manière à pouvoir le concaténer à une chaîne de caractère via la fonction strcat() ?
 
Merci,

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 févr. 2007 à 16:49
char *c = tachaine;
while(*c) c++; // POINTE FIN DE CHAINE
itoa(tonInt, c, 10);

ciao...
BruNews, MVP VC++
0
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
20 févr. 2007 à 16:59
j'ai fais ce petit prog
fichdat1=

new
char*[600];

for(
int i=0;i<600;i++)fichdat1[i]=

new
char[50];

for(
int i=0;i<600;i++){

fichdat1[i] ="region" ;

while(*fichdat1[i]) fichdat1[i]++;
// POINTE FIN DE CHAINEitoa(i,fichdat1[i], 10);

}
ca me donne une erreur d'allocation d la memoire dans la ligne

itoa(i,fichdat1[i], 10);
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 févr. 2007 à 17:18
ouh laaa..... il y a du travail !!!
tu alloc des pointeurs, ensuite tu les déplaces vers des constantes, etc etc...

Il ne faut pas modifier où pointent ces pointeurs sinon tu écrirais nimporte où en mémoire et aussi impossible de désallouer.

char *c = fichdat1[0]; // PAR EXEMPLE
avec 'c' je peux me ballader dans les 50 octets de la zone pointée par fichdat[0] mais surtout pas toucher à fichdat[0].
strcpy(fichdat[0], "youpi bravo ");

Faut te remettre devant un bouquin de C.

ciao...
BruNews, MVP VC++
0
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
20 févr. 2007 à 17:27
ca ne marche tjrs pas;
char

**fichdat1;

fichdat1=

new
char*[10];

for(
int i=0;i<10;i++)fichdat1[i] =
new
char[50];

for(
int i=0;i<10;i++){

fichdat1[i] ="region";

char *c=fichdat1[i];

while(*c) c++;
// POINTE FIN DE CHAINEitoa(i,c,10);

}

j'ai tjre le meme probleme mon code se plante au niveau itoa()

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 févr. 2007 à 17:56
fichdat1[i] ="region";
Je t'ai dit qu'on ne déplace pas l'adresse d'un pointeur alloué !!!
La constant "region" aura une adresse dans ton processus, impensable que pointeur y soit placé.

strcpy(fichdat1[0], "region");

ciao...
BruNews, MVP VC++
0
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
21 févr. 2007 à 19:47
BruNews,

char *c = tachaine;
while(*c) c++; // POINTE FIN DE CHAINE
itoa(tonInt, c, 10);

Et si après le "while(*c) c++", tu te retourve à la fin de ton tableau ou de la mémoire allouée... ==> buffer overflow ou même plantage possible lors du free() si c'est de la mémoire allouée.....
Pas très sur comme technique !
0
simaxe25 Messages postés 13 Date d'inscription vendredi 7 janvier 2005 Statut Membre Dernière intervention 16 juillet 2008
28 nov. 2007 à 02:48
bon pour celles et ceux qui voudraient faire la même chose en .NET; a titre d'info :
utilisez : Convert::ToString();
0
Rejoignez-nous