CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probleme avec fread

omegasf3
omegasf3
Niveau 8
15 janvier 2005 à 16:18:01

Bonjours j´ai un peit probleme avec fread en fait j´ai creer un programme ( une sorte d´agenda),donc j´écrit dans un fichier avec un fwrite les structur que se trouve dans u tableau,, il me le met dans mon fichier mais lorsaue je veux reprendres ces donnés qui sont dasn mon fichier pour les mettre dans mon tableau ça bug. voici mon code source:

  1. include < stdio.h>
  2. include < stdlib.h>
  3. include < string.h>

typedef struct individu{
char nom[31];
char prenom[31];
char adresse[61];
char ville[21];
char telephone[11];
int suivant;
}individu;

int Nb_fiche;
FILE * Fp_fiche;

void debuter_fiche(){
Fp_fiche=fopen("fiche.dat","a+");
if ( Fp_fiche == NULL) {
fprintf(stderr,"Erreur dans l´ouverture du fichier");
exit(-1);
}
fseek(Fp_fiche,0l,2);
Nb_fiche=ftell(Fp_fiche);
fseek(Fp_fiche,0l,2);
if(Nb_fiche==0)
fprintf(Fp_fiche,"%d\n",-1);
Nb_fiche=Nb_fiche/sizeof(individu);
fseek(Fp_fiche,0l,2);
}

void saisir_fiche(){
individu* tab_fiche;

tab_fiche=(individu*)malloc((Nb_fiche+10)*sizeof(i
ndividu));
if ( tab_fiche==NULL) {
printf("Erreur d´allocation mémoire ! !!");
exit(1);
}
printf("veuillez entrer un nom ( 31 charactere max)\n");
fgets(tab_fiche[Nb_fiche].nom,31,stdin);
printf("veuillez entrer un prenom ( 31 charactere max)\n");
fgets(tab_fiche[Nb_fiche].prenom,31,stdin);
printf("veuillez entrer une adresse ( 61 charactere max)\n");
fgets(tab_fiche[Nb_fiche].adresse,61,stdin);
printf("veuillez entrer une ville ( 21 charactere max)\n");
fgets(tab_fiche[Nb_fiche].ville,21,stdin);
printf("veuillez entrer un numero de telephone ( 11 charactere max)\n");
fgets(tab_fiche[Nb_fiche].telephone,11,stdin);
tab_fiche[Nb_fiche].suivant=Nb_fiche;
printf("Votre fiche a corectement été afficher\n");

fwrite(tab_fiche,Nb_fiche+1,sizeof(individu),Fp_fi
che);
Nb_fiche++;
fseek(Fp_fiche,0l,2);
}

void finir_fiche(){
fclose(Fp_fiche);
}

void lire_fiche(){
int i;
individu* tab_fiche;

tab_fiche=(individu*)malloc((Nb_fiche+10)*sizeof(i
ndividu));
if ( tab_fiche==NULL) {
printf("Erreur d´allocation mémoire ! !!");
exit(1);
}
fseek(Fp_fiche,0l,2);

fread(tab_fiche,Nb_fiche+1,sizeof(individu),Fp_fic
he);
printf("Votre agenda contient %d fiche(s) suivante(s)\n",Nb_fiche);
for(i=0;i<Nb_fiche;i++,tab_fiche++){
printf("%s\n",tab_fiche->nom);
printf("%s\n",tab_fiche->prenom);
printf("%s\n",tab_fiche->adresse);
printf("%s\n",tab_fiche->ville);
printf("%s\n",tab_fiche->telephone);
printf("%s\n",tab_fiche->suivant);
}
fseek(Fp_fiche,0l,2);
}

int main(){
debuter_fiche();
saisir_fiche();
/ ire_fiche();
finir_fiche();
printf("%d\n",Nb_fiche);
return 0;
}
voici ce qui se passe lors de l´execution du programme:
veuillez entrer un nom ( 31 charactere max)
peeroo
veuillez entrer un prenom ( 31 charactere max)
cedric
veuillez entrer une adresse ( 61 charactere max)
7766778n ryez
veuillez entrer une ville ( 21 charactere max)
paries
veuillez entrer un numero de telephone ( 11 charactere max)
987688768
Votre fiche a corectement été afficher
Votre agenda contient 1 fiche(s) suivante(s)

( null)
Est ce que j´utilise mal fread?
:merci: pour votre aide

dnob700
dnob700
Niveau 10
15 janvier 2005 à 18:23:20

je ne connait pas trop l´utilisation de ces fonctions et je n´ai pas lu complétement le code.

mais je suppose qu´il lit depuisle début le fichier.
est ce qu´il ne faut pas ( mais peut-être que tu l´as déjà fait) fermer et réouvrir ( ou alors réinitialiser le pointeur de lecture) le fichier, pour qu´il recommence à lire au début et qu´il n´essaye pas de lire à le fin d´un flux qui ne contient donc plus rien ?

peut-être que je suis à coté de la plaque, c´est juste pour te donner une idée.

omegasf3
omegasf3
Niveau 8
15 janvier 2005 à 18:48:27

non car Fseek(Fp_fiche,0l,2) permet justement de se placer au debut du fichier mais merci pour ton aide

omegasf3
omegasf3
Niveau 8
16 janvier 2005 à 10:09:14

:up:
personne pour m´aider personne n´a jamais utiliser de fread?
:-(

Altonfrere
Altonfrere
Niveau 10
16 janvier 2005 à 12:57:02

j´essaierai plutôt :

fread(tab_fiche,Nb_fiche+1,sizeof(individu),Fp_fic
he);

normalement c´est la taille des données en premier puis le nombre en second.

Dans ton cas tu lis N foi ( la taille de la structure) Nb_fiche+1 octets

Altonfrere
Altonfrere
Niveau 10
16 janvier 2005 à 12:57:41

arf copier coller . ..

fread(tab_fiche,sizeof(individu),Nb_fiche+1,Fp_fic

he);

je voulais dire

omegasf3
omegasf3
Niveau 8
16 janvier 2005 à 12:59:24

oui je m´en était rendu compte en faisant un man de fread et j´ai changer mais ça change rien ça me remet les meme trucs

omegasf3
omegasf3
Niveau 8
16 janvier 2005 à 13:13:30

:(
Dans ce cas essayons de partir du debut si j´ai bien compris avec un fread on peut retransmettre dans un tableau ce qui a été ecrit grace a un fwrite?

omegasf3
omegasf3
Niveau 8
16 janvier 2005 à 13:20:18

ça y est j´ai trouvé le probleme t´avait raison dnob700 en fait le probleme venai du Fseek(Fp_fiche,0l,2) en fait a la place du 2 faut mettre SEEK_SET pour vraiment se mettre au debut du fichier
:fier:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment