Debutant - lire un fichier txt

Signaler
Messages postés
13
Date d'inscription
jeudi 24 juin 2004
Statut
Membre
Dernière intervention
19 septembre 2008
-
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
-
Bonjour, j'essaye, pour débuter d'ecrire un programme qui lit un fichier et qui affiche caractère par caractère ce qu'il lit, j'ai le code source suivant:

#include
#include <stdio.h>
#include <stdlib.h>
main(){
FILE *F;
char caractere;
F=fopen("c:\\donnee.txt","r+");
fscanf(F,"%c",&caractere);
while (!feof(F)) { cout << caractere << endl;}
fclose(F);
return 0;
}

Le programme en question compile mais quand je le lance, il reste sur la premiere lettre du fichier... Il affiche:
b
b
b
b
b
continuellement...
Comment faire pour qu'il passe au caractère suivant?

2 eme question: comment faire pour lire le fichier mot à mot (quand je met %s, j'arrive a compiler, mais le programme plante dès que je le lance?

Merci d'avance...
Tom

2 réponses

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Je vois ke c du C++ mais en C, ca donnerait ca :

char sBuffer[256];
FILE *open;

open = fopen("c:\\donne.txt", "r");

while (!feof(open)) {
fgets(sBuffer, 256, open);
printf("%s", sBuffer);
}

le pb dans ton code venait du fait que tu placais le fscanf avant la boucle, donc ca gardait le premier caractere et l'affichait dans la boucle...
Pour passer en C++, tu changes le printf en cout mais je sais pas comment le faire, donc je te le laisse...

++

Alhexman
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Yep,

ALexMan> La seule chose en C++ dans son code c'est le cout, sinon tout le reste c'est du C

acidi_washor> Ton erreur est simple ... Evite de mélanger C et C++ si c'est juste pour un affichage.. printf est l'equivalent de cout en C!

Après correction voila ton programme pour qu'il lise caractere par caracteres ...
#include <stdio.h>
int main()
{
FILE *F;
char caractere;
if((F fopen("c:\\donnee.txt","rt") NULL) return 1;

while ((c = fgetc(F)) != EOF)
{ 
   printf("%c\n",c);
}
fclose(F);
return 0;
}


Je n'ai pas testé ce code mais il devrais marcher ...

A++ et bonne continuation ...

Samir