Strcat

Résolu
Bonjour,
J'aimerais savoir comment dois je faire pour concatener.
Je m'explique, j'ai ce code.
int Random (int _iMin, int _iMax)   /*  fonction random pour améliorer l'éxistente en c qui n'est pas vraiment aléatoire */ 
{ 
 return (_iMin + (rand () % (_iMax-_iMin+1))); 
} 

void premierecarte()    
{ 
 int hasard1; 
  
 srand (time (NULL)); /* tirage des cartes alétoire grace a srand qui utilise l'heure de la machine */ 
 hasard1 = Random (0,51); 
 tab_hasard[0]=hasard1;      
 carte1=tableau_cartes[hasard1];     
 tab_cartetire[0] = *carte1; /* servira a ne pas tirer deux fois la meme carte */ 
 couleurcarte1 = &carte1[0]; /*extraction de le couleur de la carte*/ 
 valeurcarte1[0] = &carte1[1];/*on met la valeur dans valeurcarte*/ 
  
 printf("%s\n", carte1); 
  
 SDL_Surface *imagecarte1 = NULL;  
  
 SDL_Rect positionimagecarte1; 
  
 positionimagecarte1.x = 40; 
 positionimagecarte1.y = 160; 
  
  
 //char *strcat(char* carte1[1],const char* ".png") 
 imagecarte1 = IMG_Load("t05.png"); 
  
 SDL_BlitSurface(imagecarte1, NULL, ecran, &positionimagecarte1); 
  
 SDL_Flip(ecran); 
  
 SDL_FreeSurface(imagecarte1); 
  
  
}


et dans imageload je souhaite mettre une variable qui a pour valeur celle de la carte1 issu du random à laquelle je rajoute un .png

Cordialement
merci d'avance

3 réponses

  1. strcat permet de mettre ensemble deux chaînes de caractères, voila la syntaxe
    strcat(chaine dans laquelle on ajoute la seconde,chaine à ajouter)

    exemple: char *chaine1[10]="grand ";
    char *chaine2[5];="merci"
    strcat(chaine1,chaine2);
    printf"%s",strcat(chaine1,chaine2);

    affichage: grand merci
    jesper avoir fait kelke choz pour toi
    1. bonjour,

      strcat est un fonction de <string.h> qui agit (comme les autres fonctions de cette bibliothèque) sur des chaines statiques or là tu utilise des chaines dynamiques avec les pointeurs.

      donc il te faut soit passer en chaine statiques et effectuer le strcat

      sinon il faut creer un sous programme qui face la même chose en chaine dynamique (je ne sais pas si il en existe une toute faite mais surement)
      sinon voilà un exemple :
      char * concat (char * chaine1, char * chaine2)
      {
          char * chaineConcat;
          int i;
      
          chaineConcat=(char*)malloc((longueur(chaine1)+longueur(chaine2))*sizeof(char));
          for(i=0;i<longueur(chaine1);i++)
          {
              chaineConcat[i]=chaine1[i];
          }
          for(i=0;i<longueur(chaine2);i++)
          {
              chaineConcat[longueur(chaine1)+i]=chaine2[i];
          }
          chaineConcat[longueur(chaine1)+i]='\0';
      
          return chaineConcat;
      }


      sans oublier la fonction "longueur"
      int longueur ( char * chaine)
      {
          int i=0;
      
          while(*chaine!='\0')
          {
              (int*)chaine++;
              i++;
          }
      
          return i;
      }


      En espérant avoir répondu à ta question.