Bonsoir,

Voilà je souhaiterais créer un programme me permettant de mélanger un mot !!

voici mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 #include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#define N 5
 
char * un_mot(){
 
   int i;
   char *dico[N]= {"maison", "mitochondrie", "escherichia", "institut", "programation"};  //remplissage de notre tableau de mot
 
 
    srand((unsigned int) time(NULL));
    i=rand()%N;                         //on choisit un chiffre aléatoire compris entre o et N-1
 
    //printf("%s \n",dico[i]);            // on affiche le mot choisi aléatoirement
 
    return dico[i];
}
 
 
char * enlever_une_lettre(char * mot){ 
 
  char *motReponse;
  char motinitial[]={strlen(mot)};
  strcpy(motinitial,mot);
 
  int longueur_mot,c,i,j;
  char *copieChaine;
 
  longueur_mot=strlen(motinitial);
  srand((unsigned int) time(NULL));
 
  copieChaine=malloc(sizeof(char)*(longueur_mot+1));//on crée une chaine de caractere qui aura la même taille que notre chaine initiale
  motReponse=malloc(sizeof(char));
 
 
  for(i=0;i<longueur_mot;i++){
    c=rand()%(longueur_mot-1);//on cherche à obtenir un nombre aléatoire compris etre 0 et la longueur de la chaine étudiée
    copieChaine[i] =motinitial[c]; //on copie le caratere de la position aléatoire dans notre chaine copie
 
    for(j=c;j<longueur_mot;j++){
      motinitial[j]=motinitial[longueur_mot-1]; //le dernier caractere de notre chaine prend la place du caratere à la position "c", ainsi à chaque tour de boucle le caratere est éliminé
      mot[longueur_mot-1]='\0';
 
    }
 
  }
 
  printf("le mot melange: %s \n", copieChaine);
 
  printf("votre réponse:\n");
  scanf("%s",motReponse);
 
  return 0;
}
 
int main(){
 
  enlever_une_lettre(un_mot());
 
 
  return 0;
}
Ma première fonction permet de générer un mot aléatire dans un dictionnaire que j'ai crée!
La seconde permet de mélanger le mot choisi, dans un premier temps je crée une première boucle for où chaque caractère de la position trouvé aléatoirement est copié dans ma chaîne copie puis ce caractère est remplacé par le dernier caractère dans la chaîne de départ grâce à la seconde boucle for.

À la compilation je me retrouve avec une erreur de segmentation!!
Je ne comprends pas l'erreur et j'aurais voulu savoir si mon code est cohérent!!
Merci