Probleme chaine de caracteres en C.

Booffi -  
 booffi -
Salut j'ai un petit problème avec les chaînes de caractères en C.
J'aimerais savoir comment on peut inverser 2 lettres d'une chaîne(par exemple "maison" devient masion") avec une chaîne de caractères déclarées comme pointeur : char *s.(parce qu'avec un tableau je sais faire :-)). Et j'aimerais aussi savoir pourquoi la fonction strcat me renvoie une erreur qd son premier argument est une chaîne de caractères sous forme de pointeur la encore( strcat(char *s1, char *s2) marche pas...) alors que si on lui passe la chaîne ss forme de tableau : char s[], la fonction marche très bien(strcat(char s1[], char *s2) marche...).Voilà merci.

1 réponse

  1. tafiscobar Messages postés 1281 Statut Contributeur 177
     
    lorsque tu fais strcat, il renvoie une erreur parce que tout simplement *s1 est n'est pas assez "grd" pour contenir s1 et s2.

    normallement ceci devrait marcher :
    s1 = realloc(s1,strlen(s1)+strlen(s2)+1);
    strcat(s1,s2);

    sinon, pour le remplacement d'un caractere c'est la meme chose:
    on a : strcpy(s1,"maison");
    char *tmp = s1+2;//pointe sur l'adresse de i
    *(s1+2) = *(s1+3); //remplace i par s
    *(s1+2) = *tmp; //remplace le s par i

    tafiscobar
    0
    1. booffi
       
      Merci !! :-)
      C'est gentil!
      0