Convertir un int en char

Signaler
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012
-
Messages postés
13
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
16 juillet 2008
-
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

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
char *c = tachaine;
while(*c) c++; // POINTE FIN DE CHAINE
itoa(tonInt, c, 10);

ciao...
BruNews, MVP VC++
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

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);
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
117
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
30 mars 2012

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
178
Date d'inscription
mardi 16 août 2005
Statut
Membre
Dernière intervention
25 août 2010
1
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 !
Messages postés
13
Date d'inscription
vendredi 7 janvier 2005
Statut
Membre
Dernière intervention
16 juillet 2008

bon pour celles et ceux qui voudraient faire la même chose en .NET; a titre d'info :
utilisez : Convert::ToString();