Concatenation

asmv Messages postés 5 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 22 juin 2003 - 14 juin 2003 à 17:42
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 - 15 juin 2003 à 09:20
//a partir d'elements de tableau 'int' transformes en 'char'
//essai de concatenation qui ne fonctionne pas pourquoi ?
//merci pour votre aide
#include <stdio.h>
#include <string.h>
int main()
{
// premier tableau en 'int'
int ti[2] = {12, 5};
printf("controle de 'ti[]' \n");
printf("ti[0]:%d\n", ti[0]);
printf("ti[1]:%d\n\n",ti[1]);

// transformation des 'int' en 'char'
char tc[2];
tc[0] = (char)ti[0];
tc[1] = (char)ti[1];
printf("controle de'tc[]' \n");
printf("tc[0]:%d\n", tc[0]);
printf("tc[1]:%d\n\n", tc[1]);

// a partir d'ici ca coinse
char ens[10];
strcpy(ens, tc[0]);
strcat(ens,"-");
strcat(ens, tc[1]);
printf(" L'ensemble est : %s", ens);

printf("\n\n\n");
return 0;
}

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 juin 2003 à 17:51
char tc[2];
tc[0] = (char)ti[0]; ???
tc[1] = (char)ti[1]; ???
C'est quoi le BUT ?
tu recup les 8 bits bas de chaque int dans tc[0] et tc[1], ensuite ???
BruNews, ciao...
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
14 juin 2003 à 18:26
Ton probleme (je pense) est que 'tc[0]' est un caractere et non une chaine de caractere.Il faut une '\\0' apres le caractere car 'strcpy' copie tous les caracteres j'usqu'au '\\0', or tu n'en as pas => BUG !
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
14 juin 2003 à 18:33
'strcat' et 'strcpy' prennent en argument des chaines de caracteres i.e. une suite de caracteres de terminant pas un '\\0' !
Or tu leur passes un caractere !!!
=> BUG !

tu devrais faire :

char ens[10];
sprintf(ens,"%c-%c",tc[0],tc[1]);
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
15 juin 2003 à 09:20
Essaye avec ces deux fonctions
char *strncpy(char *dest, const char *src, size_t maxlen);
char *strncat(char *dest, const char *src, size_t maxlen);

soit :

strncpy(ens, &tc[0], 1);
strcat(ens,"-");
strncat(ens, &tc[1], 1);

Je n'ai pas vérifié mais je pense que ça devrais mieux marcher

A+
0
Rejoignez-nous