Debutant - lire un fichier txt

cs_aciid_washor Messages postés 13 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 septembre 2008 - 24 juin 2004 à 12:27
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 24 juin 2004 à 16:22
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

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 2
24 juin 2004 à 12:50
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
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
24 juin 2004 à 16:22
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
0
Rejoignez-nous