Fread

sebleboss2002 Messages postés 189 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 3 avril 2005 - 20 août 2003 à 10:13
tcok Messages postés 61 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 3 août 2005 - 20 août 2003 à 15:52
Salut tout le monde !

J'ai fait un ptit bout de code pour lire un fichier .txt avec fread, mais, alors que le fichier ne contient que le mot "prout", le console me sort des sigles bizarres, avec, au milieu, les lettres du mot "prout".

Mon code est le suivant :


#include <stdio.h>
#include <conio.c>
#include

int main()
{
char var1[1];
FILE * file5;

file5 = fopen("C:\\fichier.txt","r");

while (!feof(file5))
{
fread(var1, 1, 1, file5);
cout << var1;
}

getchar();
return 0;
}

Merci pour toute éventuelle réponse...

Seb.

9 réponses

tcok Messages postés 61 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 3 août 2005
20 août 2003 à 11:43
salut

ton var1 est une chaine de caractere, il fo lui mettre eu zero terminal pour qu'elle fonctionne;
mais puisque tu ne lis qu'un seul caractere a chaque fois il vaut mieux que tu utilise

char var1;
...
fread(&var1,1,file5);

@+
tcok
0
sebleboss2002 Messages postés 189 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 3 avril 2005
20 août 2003 à 13:59
Merci beaucoup, ça marche déjà mieux, le seul problème restant est que le dernier caractère se répète deux fois (dans mon cas, la console me sort "proutt").

Si quelqu'un a une idée...

Merci d'avance,

Seb.
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
20 août 2003 à 14:58
Je remarque un oublie dans ton code!! Le pointeur de flux file5, une fois que tu ne t'en sert plus : fclose(file5)...
a+
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
20 août 2003 à 15:03
essai ça pour que ton caractère de fin ne se répète pas :

fread(var1, 1, 1, file5);
while (!feof(file5))
{
cout << var1;
fread(var1, 1, 1, file5);
}

le problème avec ce que tu as écris c'est:
while (!feof(file5))
{
fread(var1, 1, 1, file5);
cout << var1;
}
lorsque tu arrive en fin de fichier (caractère t) tu le lit, tu l'affiche, la boucle recommence, tu lit (mais tu arrive a la fin du fichier) et var1 n'as pas changer et tu l'affiche=> tu as 2 t dans ton mot. La boucle que je te propose règle ce problème (tu peut faire autrement)

a+
0

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

Posez votre question
sebleboss2002 Messages postés 189 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 3 avril 2005
20 août 2003 à 15:14
Merci HCJarod, mais mon caractère en trop est toujours là :S

Ceci dit, c'est vrai que je l'avais oublié... Merci !
0
tcok Messages postés 61 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 3 août 2005
20 août 2003 à 15:42
tu peux faire un do{}while autrement
0
sebleboss2002 Messages postés 189 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 3 avril 2005
20 août 2003 à 15:43
Merci ! Ça marche impec ! Merci encore tcok et HCJarod ! merci beaucoup !
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
20 août 2003 à 15:48
Si tu fait un do{}while, tu as le même pb :
do{
fread(var1, 1, 1, file5);
cout << var1;
}while(feof(file5));
pour le dernier caractère, tu lit, tu l'affiche, et a la fin fu fichier, tu lit, fread renvois EOF (end of file) et tu affiche var1 et tu l'as dans l'os...

a+
0
tcok Messages postés 61 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 3 août 2005
20 août 2003 à 15:52
ouais tu as raison
0
Rejoignez-nous