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.
A voir également:

1 réponse

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
booffi
 
Merci !! :-)
C'est gentil!
0