Probleme d'extraction des mots d'un fichier

cyrina84 Messages postés 43 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 22 mai 2010 - 1 juin 2008 à 22:26
amiramima Messages postés 1 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 21 novembre 2008 - 21 nov. 2008 à 11:29
Merci à tous les developpeurs qui m'ont aidé .
Donc voilà ce que j'ai réalisé comme travail: le but est d'extraire les mots des differentes lignes d'un fichier texte, mais le probleme c'est que le programme n'affiche que les mots de la derniere ligne.
J'ai refléchi trop sur ce point surtout sur la foonction d'extraction des mots mais j'ai pas réussi à localiser le probleme.
Voila mon bout de code espérant que vous allez me trouvez une soultion :


#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define TAILLEMAX 1000 //tableau de taille 1000

int main(int argc, char *argv[])
{
FILE* fichier =NULL;
char chaine [TAILLEMAX ]=" "; // chaine vide de taille TAILLEMAX
fichier =fopen("test.txt","r");
if (fichier !=NULL)
{
while(fgets(chaine, TAILLEMAX , fichier)!=NULL;
} //on lit maximum TAILLEMAX caractere du fichier , on stoke le tout dans "chaine"


printf("%s", chaine); //on affiche la chaine
}
fclose (fichier);
return0;
}

void Affiche_mot (char* s)
{
if(s!=NULL)
{
int length=strlen(s);
int i =0;
while(i<length)
{
if(s[i]!= ' ' &&s[i]!='\n')
{
printf("%c", s[i]);
]
else
printf("\n");
i++;
}
}
}
MErci

6 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
1 juin 2008 à 23:49
while(fgets(chaine,  TAILLEMAX , fichier)!=NULL);

fgets lit une ligne puis la stock dans le buffer passé en argument.
Elle ne concatène pas.

Soit tu effectues les traitement ligne par ligne (dans la boucle du fgets), soit tu lis par bloc (ou tout d'un coup) avec fread.

C++ (@++)<!--
0
cyrina84 Messages postés 43 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 22 mai 2010
1 juin 2008 à 23:53
MERCI POUR VOTRE REPONSE? MAIS S'il vous plait vous pouvez m'eclaircir un peu, car la je comprends ; quoi mettre dans la boucle du fgets
merci
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 juin 2008 à 00:09
Je n'en sais rien. Selon ton code, tu ne fais rien d'autre qu'afficher le buffer une fois le fichier lu.

Affiche_mot n'est appelée nulle part.

Mais sinon, quelque chose comme ça:

while(fgets(chaine,  TAILLEMAX , fichier)!= NULL) {
    Affiche_mot(chaine);
}

Aussi, tu as une d'accolade fermante de trop dans ton code après:
printf("%s", chaine); //on affiche la chaine

Finalement:

void Affiche_mot (char* s)

{

  if(s!=NULL)

    {

       int length=strlen(s);
       int i =0;

       while(i<length)
            {

               if(s[i]!= ' ' &&s[i]!='\n')

              {

                 printf("%c", s[i]);

               ]

              else

               printf("\n");

               i++;

         }

}

Inutile. Suffit de tester si le caractère est non nulle.

void Affiche_mot (char* s)

{

  if(s!=NULL)

    {

       int i =0;

       while(s[i])

            {

               if(s[i]!= ' ' &&s[i]!='\n')

              {

                 printf("%c", s[i]);

               }
              else

               printf("\n");

               i++;

         }

    }

}

C++ (@++)<!--
0
cyrina84 Messages postés 43 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 22 mai 2010
2 juin 2008 à 00:18
oui c ca , c'est ce que j'ai ecrit, en fai j'ai oublié de tapeer cette instruction car jai pas fait copier coller, mais toujours il m'affiche la drniere ligne du fichier.
merc i
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 juin 2008 à 00:34
Bien pourrais tu poster un copier coller du code ? Peut-être as tu oublié d'écrire autre chose parce que sinon, je ne vois vraiment pas d'où vient le problème.

C++ (@++)<!--
0
amiramima Messages postés 1 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 21 novembre 2008
21 nov. 2008 à 11:29
bj
ily a un autre problem c celui des separateur il faut les prendre en consideration
0
Rejoignez-nous