Création
d'entreprise
Posez votre question Signaler

La fonction fread() [Résolu]

yougi 24Messages postés 8 juin 2007Date d'inscription 13 mars 2010Dernière intervention - Dernière réponse le 13 mars 2010 à 22:59
Bonjour,
Brièvement, Pourquoi ce code marche pas !!
#include <stdio.h>
typedef struct{
char *name;
int energy;
}robot;
int main() {
robot *r = (robot *)malloc(sizeof(robot));
robot *t = (robot *)malloc(sizeof(robot));
FILE *fichier;
int i;
r->energy = 4;
r->name = NULL;
fichier=fopen("write.txt","w");
for(i = 0; i < 5; i++)
fwrite(r, sizeof(robot),1,fichier);
fclose(fichier);
fichier=fopen("write.txt","r");
while(!eof(fichier)){
fread(t,sizeof(robot),1,fichier);
printf("%d---%s",t->energy,t->name);
}
fclose(fichier);
system("PAUSE");
return 0;
}
Lire la suite 

La fonction fread() »

1 réponses
Réponse
+1
moins plus
C'est résolu... , je vais vous partager la solution.

Il faut remplacer ces lignes :

while(!eof(fichier)){
fread(t,sizeof(robot),1,fichier);
printf("%d---%s",t->energy,t->name);
}

par ces nouvelles lignes :

while(fread(t,sizeof(robot),1,fichier) != 0)
printf("%d---%s",t->energy,t->name);

Pouquoi ?... Tout simplement car la détection de la fin du fichier se fait lorsque la fonction fread() retourne un zéro. ^^

Allez Merci comme même...
MEDIUMPP
Ajouter un commentaire
Ce document intitulé « La fonction fread() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?