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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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
Rejoignez-nous