Strcat

Résolu/Fermé
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011 - Modifié par mirmoleboss le 21/05/2010 à 21:51
didji31320 Messages postés 23 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 27 mars 2011 - 22 mai 2010 à 11:04
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

xaviermfx Messages postés 2 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 22 mai 2010
22 mai 2010 à 10:18
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
0
mirmoleboss Messages postés 303 Date d'inscription mercredi 11 octobre 2006 Statut Membre Dernière intervention 29 juillet 2011 17
22 mai 2010 à 11:03
Merci c'est parfait
0
didji31320 Messages postés 23 Date d'inscription mardi 8 décembre 2009 Statut Membre Dernière intervention 27 mars 2011 7
22 mai 2010 à 11:04
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.
0