Pb de concaténation

cs_beatrice84 Messages postés 9 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 17 avril 2008 - 17 avril 2008 à 16:23
cs_beatrice84 Messages postés 9 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 17 avril 2008 - 17 avril 2008 à 16:55
Bonjour à tous !
Je suis entrain d'écrire un programme de compression selon la méthode de shannon-fano.J'ai un petit problème car je n'arrive pas à concaténer deux chaines de caractères.
voici l'erreur obtenue :
test1.c: In function 'codage':
test1.c:170: warning: passing argument 1 of 'strcat' makes pointer from integer without a cast
test1.c:174: warning: passing argument 1 of 'strcat' makes pointer from integer without a cast

Est ce que quelqu'un pourrait m'aider.
Je vous remercie par avance 

Et voici la fonction qui bug :

void codage(char tab[],int tab_init[],int taille_tab_init){

  int i,j;
  int k;
  char t;
 char h;
  k=chercher_indice( tab_init,taille_tab_init);

  for(i=0; i<k ; i++){
    t=tab[i];
    strcat( t ,"0");
  }
  for(j=k; j < taille_tab_init ;j++){
 h=tab[j];
    strcat( h, "1");
  }

}

5 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
17 avril 2008 à 16:33
strcat demande comme premier argument un pointeur char.
Cependant, tu passes un char.

C++ (@++)<!--
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
17 avril 2008 à 16:38
Tu ne peut pas affecter a un char(1 octet) une adresse mémoire(4 octet), remplace char t; et char h; par char* t; et char* h;...

Neo_Fr
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
17 avril 2008 à 16:42
Et remplace aussi t=tab[i]; et h=tab[j]; par t=&tab[i]; et h=&tab[j]; sinon tu va donner au pointeur la valeur de l'élement i de ton tableau tab, resultat ton pointeur pointera sur une zone de memoire non valide.

Neo_Fr
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
17 avril 2008 à 16:52
for(i=0; i<k ; i++){
    tab[i] = '0';
  }

tab[i] = 0;

Si c'est ça que tu voulais faire, tu n'avais pas besoin de strcat.

C++ (@++)<!--
0

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

Posez votre question
cs_beatrice84 Messages postés 9 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 17 avril 2008
17 avril 2008 à 16:55
Merci beaucoup pour vos réponse ! Maintenant ça marche grace à votre aide.
Je vais pouvoir poursuivre mon projet :-)
0
Rejoignez-nous