L'idée est de découpée une ligne de texte en mot...mais mon programme saute des lettre dans le decoupage et je ne vois pas d'ou cela peut provenir..
Code de la fonction pour creer la ligne :
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 char car[2]={0}; //chaine de char contenant une lettre + caractere fin de chaine soit 2 emplacements a reserver char * ligne; //pointeur sur mon gros tableau int i=0,j; ligne = malloc (2*sizeof(char)); //creation du gros tableau dynamique if( ligne == NULL ) { fprintf(stderr,"Allocation impossible"); exit(EXIT_FAILURE); } while (!feof(pf)) { //remplir le gros tableau dynamique pour qu'il contienne la ligne. fgets(car, sizeof car, pf); //lecture dans le fichier if(car[0]!=10) //si pas newligne (dc pas fin de ligne) { ligne[i]=car[0]; ligne = realloc (ligne, (i+1) *(2*sizeof(char)) ); //Ajout d'un element au gros tableau printf(" ligne[%d] = %c \n", i , ligne[i] ); i++; } else { DecoupeGrosTab(ligne,MaChaine); //on decoupe la ligne..cha doit faire mal free(ligne); //on libère le gros tableau ligne = malloc (2*sizeof(char)); //creation du gros tableau dynamique if( ligne == NULL ) { fprintf(stderr,"Allocation impossible"); exit(EXIT_FAILURE); } i=0; //et hop ! encore un tour... } }
Code pour le decoupage de cette ligne :
Le resultat suivant est obtenu :
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 int j=0, x=0, nbAjout=0; char * mot; //pointeur sur le tableau contenant mon tout petit mot mot = malloc (2*sizeof(char)); //creation du tableau dynamique pour le petit mot if( mot == NULL ) { fprintf(stderr,"Allocation impossible"); exit(EXIT_FAILURE); } //parcours du gros tableau for (j=0 ; j<=sizeof(ligne) ; j++) { if((ligne[j]!= 32) && (!ispunct(ligne[j]))) { //si pas espace et pas ponctuation mot[x]=ligne[j]; // mot = realloc (mot, x+1 *(2*sizeof(char))); //Ajout d'un element au tableau printf(" mot[%d] = %c \n", x , mot[x] ); x++; } else { if(nbAjout==0) { //MaChaine=inserer_debut(MaChaine, mot); //on sauvegarde le mot //nbAjout++; } //else MaChaine=inserer_fin(MaChaine, mot); //on sauvegarde le mot free(mot); //on detruit le mot mot = malloc (2*sizeof(char)); //creation du gros tableau dynamique if( mot == NULL ) { fprintf(stderr,"Allocation impossible"); exit(EXIT_FAILURE); } x=0; //et c'est reparti pour un tour !! } } }
ligne[0] = C
ligne[1] = o
ligne[2] = u
ligne[3] = c
ligne[4] = o
ligne[5] = u
ligne[6] =
ligne[7] = c
ligne[8] = '
ligne[9] = e
ligne[10] = s
ligne[11] = t
ligne[12] =
ligne[13] = m
ligne[14] = o
ligne[15] = i
ligne[16] = !
ligne[17] = !
mot[0] = C
mot[1] = o
mot[2] = u
mot[3] = c
mot[4] = o
mot[0] =
mot[1] =
mot[2] =
mot[3] =
mot[4] =
Le remplissage du tableau ligne se fait bien...mais c'est au moment du découpage je ne comprend je ne recupère pas du tout ce qu'il faut et je ne vois pas d'où cela peut provenir...
Merci pour votre aide![]()
Partager