bonjour,
voilà j'ai écris une fonction me permettant de mélanger un mot!!
Dans un premier temps je crée un dictionnaire de mot aléatoire et dans un second temps je crée une fonction qui mélange se mot.
Je me retrouve avec un problème lors de la compilation mon mot se trouve tronqué!!
Il semble y avoir un problème dans mes boucles for où la longueur de mon mot que je souhaite calculer n'est pas mis à jour!!! auriez vous une idée???
[/code]#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)+1];
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);//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[j+1]; //le dernier caractere de notre chaine prend la place du caratere à la position "c", ainsi à chaque tour de boucle le caratere est éliminé
//motinitial[j+1]='\0';
motinitial[longueur_mot]='\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;
}[/code]