Problème de programme en C
cyrinix
-
mype Messages postés 2435 Date d'inscription Statut Membre Dernière intervention -
mype Messages postés 2435 Date d'inscription Statut Membre Dernière intervention -
#include <stdio.h>
#include <stdlib.h>
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<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
#include <stdlib.h>
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<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
A voir également:
- Problème de programme en C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
1 réponse
le probleme c'est que le fgets() s'arrete de lire des qu'il trouve un \n ça veut dire que tu lis la premiere ligne de ton fichier tu la stocke dans chaine ensuite tu lis la deuxieme tu la stocke a nouveau dans chaine ce qui fais que la premiere ligne sera effacé etc... donc a la fin tu as dans chaine que la derniere ligne du fichier
tu devrais plutot essayé de lire caractere par caractere
essaye ça
tu devrais plutot essayé de lire caractere par caractere
essaye ça
#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 int i;char c; fichier =fopen("test.txt","r"); i=0; if (fichier !=NULL) { while(c!= EOF){ c=fgetc(fichier); chaine[i]=c; i++;} } chaine[i-1]='\0'; printf("%s", chaine); //on affiche la chaine fclose(fichier); return 0; } 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++; } } }