Concaténer un caractère a une chaine de caractères

Résolu
deck_bsd
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
- 26 juil. 2005 à 14:17
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
- 27 juil. 2005 à 17:56
Bonjour, voila g un petit problem,

ds mon programe je converti un int en char, mais apres je veu le concaténer en faisant strcat(chaine_de_caract,caract);

Mais biensur cela ne vas pas, kelkun a til un idée?

Merci d'avance.

22 réponses

bathof
Messages postés
28
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
31 janvier 2009

26 juil. 2005 à 15:13
Salut,



C'est normal car ta variable "char D_chinter" est un seul caractère, il
faut en faire une chaine de caractère ex : char D_chinter[5].



Et ne pas oublier de modifier :

itoa(D_tmt->tm_mon,&D_chinter,10);



Par :

itoa(D_tmt->tm_mon,D_chinter,10); // J'ai enlevé le symbole & de D_chinter



voilà bonne chance et a +.
3
oulali
Messages postés
19
Date d'inscription
lundi 28 juin 2004
Statut
Membre
Dernière intervention
29 novembre 2005

26 juil. 2005 à 15:40
Tu peut tout mettre dans un sprintf sans te casser la tête avec mille instructions.

sprintf (D_timedecomposee, "%s/%d\n",
D_ptdayweek[D_tmt->tm_wday],
D_tmt->tm_mon);
3
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
26 juil. 2005 à 14:24
itoa(monNombre, MaChaine + strlen(MaChaine), 10);

ciao...
BruNews, MVP VC++
0
cs_Joky
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
26 juil. 2005 à 14:26
et si ça ne va pas, c'est qu'il y a un problème dans le code voyons, et
là évidemment on peut pas dire, puisque tu ne postes pas de code...

Met le code en question, avec les déclarations de variables, et aussi les erreurs



Tu peux utiliser ossi wsprintf( Chaine_de_caract, "%s %i", Chaine_de_caract, Entier_a_concat);

lol, je sais pas si c'est la bonne syntaxe, mais c'est dans ce style ;)

void Aurevoir( void ); //Bonne journée
0

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

Posez votre question
essirc
Messages postés
48
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
26 juillet 2005
3
26 juil. 2005 à 14:26
Salut,



un sprintf(chaine_de_caract, "%d", monInt); ferait il l'affaire ?



P.S : sinon détail un peu plus ce qui ne va pas avec strcat().
0
DeAtHCrAsH
Messages postés
2670
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013

26 juil. 2005 à 14:33
Laisser les vieilles casseroles au grenier, wsprintf(...) et sprintf(...) sont des moulins a vent!
Preferez itoa(...) et toute sa famille!

Shell
0
deck_bsd
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
26 juil. 2005 à 14:34
oki je met le code de cette fonction (elle est pas finie vu ke j'arrive pas a résoudre ce prob lol):

// procédure de l'historique des messages envoyer, ceux-ci sont sauver dans un fichier séquentiel.
void historique_mess()
{
time_t D_time;
char D_timedecomposee[6],D_chinter;
struct tm*D_tmt;
const char *D_ptdayweek[]={"Dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"};
FILE *fichier_hist;

D_time = time(NULL);
D_tmt = localtime(&D_time);
strcpy(D_timedecomposee,""); //initialise la variable char (efface les crasses qu'il y avait dedans).
strcat(D_timedecomposee,D_ptdayweek[D_tmt->tm_wday]);
strcat(D_timedecomposee,"/");
itoa(D_tmt->tm_mon,&D_chinter,10);
strcat(D_timedecomposee,D_chinter); /ERREUR ICI
strcat(D_timedecomposee,"\n");
fichier_hist = fopen("histomsg.txt", "a+");
fputs(D_timedecomposee,fichier_hist);
fclose(fichier_hist);
//en cours
}

je programme sous borland C++
0
deck_bsd
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
27 juil. 2005 à 09:24
Merci bcp
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
27 juil. 2005 à 10:41
Le seul problème avec itoa(), c'est que cette fonction ne fait pas partie du standard ANSI-C.

http://www.cplusplus.com/ref/cstdlib/index.html

Kaid - kaid.fr.st
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
27 juil. 2005 à 11:09
Salut Kaid,

tu as un exemple de compilo qui ne connait pas itoa() ?

ciao...
BruNews, MVP VC++
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
27 juil. 2005 à 11:34
Ca ne dépend pas que du compilo mais aussi du système. itoa() n'est pas implémenté sous Solaris, *BSD, HP/UX et certainement sur tous les autres Unix autre que Linux.

Mais c'est sûr que cet argument n'est valable que dans un soucis de portabilité du code.

Kaid - kaid.fr.st
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
27 juil. 2005 à 11:50
je ne comprends pas cela: "non implémenté sous tel systéme".
Un compilo correct place le code de itoa() dans l'exécutable, non ?

ciao...
BruNews, MVP VC++
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
27 juil. 2005 à 12:28
Sous Unix, il se contente d'appeller la fonction implémentée dans la
libc du système et si elle n'est pas implémentée, il ne va pas
l'inventer.


Kaid - kaid.fr.st
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
27 juil. 2005 à 12:59
c'est la libc du pauvre alors...

ciao...
BruNews, MVP VC++
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
27 juil. 2005 à 13:37
C'est pas la libc du pauvre, c'est la libc standard.

Kaid - kaid.fr.st
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
27 juil. 2005 à 13:56
enfin je ne saisis pas bien ces modes de compilation:
si je mets un itoa dans mon code (Win), j'ai beau regarder les dépendances de l'exe, y a aucun appel externe, le code de itoa est dans l'exe.
Pas moyen de faire cela sur Unix ??? en ce sens que je dis que c'est 'du pauvre'.

ciao...
BruNews, MVP VC++
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
27 juil. 2005 à 15:22
Aucun appel externe à itoa() dans l'EXE c'est normal, la libc est liée statiquement à ton exécutable en mode Release avec VC++. Sous
Windows il s'agit d'une fonction présente dans le runtime C de VC++ et
qui ne fait pas partie du système. Sous UNIX, une telle fonction est
présente dans la libc installée de base avec le système.

Kaid - kaid.fr.st
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
27 juil. 2005 à 15:44
bien là que je voulais arriver, ils pourraient le mettre dans le runtime C des compilos qui ciblent les Unix n'ayant pas itoa, et cela pour toutes les fonctions habituelles qui n'y sont pas.

PS: Ah que j'aime mon Windows et VS.

ciao...
BruNews, MVP VC++
0
cs_Kaid
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
27 juil. 2005 à 16:29
Oui mais comment tu détermines la liste des fonctions "habituelles" ?
Est-ce que la fonction implémentée par le compilateur A aura le même
comportement que celle implémentée par le compilateur B dans tous les
cas d'utilisation ? Les standards sont là pour éviter ce genre de
problème.



En suivant ton raisonnement: MS ajoute une fonction à Windows à partir
de la version 2K, je l'utilise dans mon programme. Quand je veux
compiler mon programme sous NT ou 9X, VC++ devrait remarquer que la
fonction n'existe et que c'est à lui d'ajouter le code pour que ca
compile ???



Kaid - kaid.fr.st
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
27 juil. 2005 à 16:48
Je vois itoa employé par des utilisateurs de Devcpp, c'est pas du MS, voilà pourquoi je pense que ce genre de fonction est devenu un standard "de fait".

Merci pour cette agréable discussion.

ciao...
BruNews, MVP VC++
0