Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1205 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Charger le contenu d'un fichier dans un tableaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Charger le contenu d'un fichier dans un tableaux

n°2120117
jmyk
Posté le 08-01-2012 à 11:55:01  profilanswer
 

Bonjour,
J'aurais besoin d'aide pour un programme, j'aimerais écrire une fonction qui permet de charger le contenu d'un fichier, donc de photos dans un tableau. J'ai commencé mais je bloque sur la copie dans le tableau. Merci de votre réponse.
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAX 40
 
typedef struct s_date
{
       int jour;
       int mois;
       int annee;
} date;
 
typedef struct s_photo
{
       char nom[NMAX];
       char repertoire [NMAX];
       date  dat;
       char clefs [NMAX];  
       int note;
} photo;
 
void saisie (char name[])
{
     int i;
     photo p;
     FILE *f;
     f=fopen (name,"w" );
     if (f!=NULL) {
                  fclose (f);
                  f=fopen(name,"a" );
                  }
     i=0;
     while (!i)
     {
           printf ("Voulez vous saisir une photo ?" );
           scanf ("%d",&i);
           if (i!=0) {
                     printf("Entrez nom :\n" );
                     scanf("%s",p.nom);
                     printf("Entrez repertoire :\n" );
                     scanf("%s",p.repertoire);
                     printf("Entrez jour :\n" );
                     scanf("%d",&p.dat.jour);
                     printf("Entrez mois :\n" );
                     scanf("%d",&p.dat.mois);
                     printf("Entrez nom :\n" );
                     scanf("%d",&p.dat.annee);
                     printf("Entrez mots clefs :\n" );
                     scanf("%s",p.clefs);
                     printf("Entrez note :\n" );
                     scanf("%d",p.note);
                     fprintf(f,"%s\n%s\n%d/%d/%d\n%s\n%d\n",p.nom,p.repertoire,p.dat.jour,p.dat.mois,p.dat.annee,p.clefs,p.note);
                     }
     }
     fclose (f);
}                
 
void chargement (char name[])
{
     FILE *f;
     char *tab;
     photo p;
     tab=(char*)malloc(sizeof(char));
     fopen(name,"r" );
     if(f==NULL) exit (-1);
     while (!feof(f))
     {
           fread (&p,sizeof (photo),1,f);
           strcpy(tab,t);
           tab++;
     }
fclose (f);
}

mood
Publicité
Posté le 08-01-2012 à 11:55:01  profilanswer
 

n°2120120
breizhbugs
Posté le 08-01-2012 à 13:15:45  profilanswer
 

Bonjour,
Si tu écris chaque champ de la structure dans le fichier en mode texte (via fprintf), il faut que tu lises chaque champ de la structure en mode texte (via fscanf ou fgets) et pas en mode binaire via fread!
(ou alors tu enregistre ta structure en mode binaire via fwrite)


---------------
Seul Google le sait...
n°2120121
jmyk
Posté le 08-01-2012 à 13:27:36  profilanswer
 

Merci pour ta réponse,
J'ai modifié mon programme mais cela ne marche pas.
 
void chargement (char name[])
{
     FILE *f;
     photo *tab;
     photo p;
     tab=(photo*)malloc(sizeof(photo));
     fopen(name,"r" );
     if(f==NULL) exit (-1);
     while (!feof(f))
     {
           fscanf (f,"%s\n%s\n%d%d%d\n%s\n%d\n",tab.nom,tab.repertoire,tab.dat.jour,tab.dat.mois,tab.dat.annee,tab.clefs,tab.note);
           tab++;
     }
}

n°2120127
breizhbugs
Posté le 08-01-2012 à 14:46:20  profilanswer
 

De toute façon un programme ca ne marche pas: ca n'as pas de pied...
Que dit ton compilateur?


---------------
Seul Google le sait...
n°2120130
gilou
Modérateur
Modzilla
Posté le 08-01-2012 à 15:06:37  profilanswer
 

jmyk,
Déjà à la base, quel format ont les fichiers que tu veux lire?
Parce que ouvrir au petit bonheur la chance des fichiers en espérant y trouver les infos dont on a besoin, dans le bon ordre, et le bon ordonnancement des octets (et rien d'autre, en particulier pas d'image, vu le test d’arrêt de boucle), c'est vivre dans le monde des bisounours, hein.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2120138
jmyk
Posté le 08-01-2012 à 16:41:48  profilanswer
 

Mon fichier est un fichier texte. Ce que je veux faire c'est affecter des blocs contenant des informations sur des photos dans un tableau.

n°2120150
gilou
Modérateur
Modzilla
Posté le 08-01-2012 à 17:44:35  profilanswer
 

OK! ça pourrait marcher, sauf que la:
tab=(photo*)malloc(sizeof(photo));  
Tu n'as pas alloué autre chose qu'un tableau à un élément, donc ton tab++ risque fort de partir dans l'hyper-espace.
Soit tu alloues un tableau avec une taille de base + des réallocations si nécessaire, soit tu gères une liste chaînée, si tu veux quelque chose qui marche.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Charger le contenu d'un fichier dans un tableaux

 

Sujets relatifs
[Résolu] Ouvrir fichier txt sans connaitre le nom completcmt remplacer le contenu d'1 div par celui d'1 fichier XML (suite)?
[HTML] forcer le téléchargement de fichierProblème de lecture d'un fichier avec fread
optimiser le temps de lecture d'un gros fichiertransformer un fichier excel en fichier txt
Lire mon fichier csv a partir de la deuxième ligneOù se trouve le fichier de descripteur de déploiement ?
[RESOLU] Compression de fichier pst 
Plus de sujets relatifs à : Charger le contenu d'un fichier dans un tableaux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR