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 :
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 !!
		}
	}
}
Le resultat suivant est obtenu :
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