Probleme chaine de caracteres en C.

[Fermé]
Signaler
-
 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

Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
175
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
Merci !! :-)
C'est gentil!