Nouveau petit problème; enfin disons juste que je voudrais tenter de comprendre.
Le but du sous programme est de réaliser un échange entre deux chaines de caractères.
Il y a une méthode simple qui est de passer par une variable temporaire et non pas de modifier les chaines mais les pointeurs qui vont pointé sur les chaines.
Cette méthode là est ok et est la plus pratique je pense.
Cela dit, j'ai voulu faire une méthode peut être plus logique ; mais malheureusement un peu plus bourrin aussi x)
EN gros, je crée une chaine temporaire.
Je lui donne la taille de la chaine1.
Et je me sert de strcpy pour faire des copies.
Mon code compile bien mais se retrouve avec une exécution strange; j'ai des résultats qui ressemble un peu à la commande système md5Sum qui affiche le chemin d'un fichier et sa signature.
Le tout aboutissant sur une erreur de segmentation.
Voilà à quoi ça ressemble
Les chaines 1 et 2 sont passé en paramètres.
- Code: Tout sélectionner
*ch3=calloc((strlen(ch2)+1),sizeof(char));
if(ch3==NULL)
{
fprintf(stderr, "Erreur calloc: échec de l'allocation mémoire de la chaine\n");
exit(1); //on quitte si le calloc plante
}
strcpy(ch3,ch2);//copie de ch2 dans ch3
int N=strlen(ch1)+1;
ch2=realloc(ch2,N*sizeof(char)); //ch2 prend taille ch1
strcpy(ch2,ch1);//copie de ch1 dans ch2
int N2=strlen(ch3)+1;
ch1=realloc(ch1,N2*sizeof(char));//ch1 prend taille ch3
strcpy(ch1,ch3);//copie de c3 dans ch1
Je suis conscient du coté bourrin de ce code; mais je voudrais comprendre ce qui plante quand même.