Du fichier au tableau

Fermé
maya89 Messages postés 22 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 8 juin 2010 - 3 févr. 2008 à 23:06
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 - 4 févr. 2008 à 00:20
Bonjour,
je cherche à écrire un programme qui permet d'enregistrer les données d'un fichier qui comporte les informations des salariés(nom,prénom,matricule,salaire) dans un tableau de structure ... bon j'ai écrit ce code mais ça marche plus ...!!!


void tableau_commercant(FILE* f,struct commercant com)
int i;
f=fopen("c:\\commercant.txt","r");
x=n*sizeof(com);
for(i=0;i=nbrCommercant-1;i++)
{
fseek(f,i,0);
fread(&com,sizeof(com),1, f);
T[i]=com;
n++;
}
fclose(f);
}

pourriez vous m'aider???!!
A voir également:

7 réponses

kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
3 févr. 2008 à 23:17
Bonjour,

J'ai mis quelques remarques en commentaire:
void tableau_commercant(FILE* f,struct commercant com)
{   //Tu as oublié cette accolade
    int i;
    f=fopen("c:\\commercant.txt","r");
    x=n*sizeof(com); //D'ou vient n? C'est une variable globale? A quoi sert x et ou est-il déclaré?
    for(i=0;i=nbrCommercant-1;i++) /*i=nbrCommercant-1 est la condition pour que la boucle continue mais là tu fais une affectation et non une comparaison, donc cette condition sera toujours vraie => boucle infinie */
    {
        fseek(f,i,0);
        fread(&com,sizeof(com),1, f);
        T[i]=com; //D'ou vient T? variable globale?
        n++;
     }
     fclose(f);
} 
0
maya89 Messages postés 22 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 8 juin 2010
3 févr. 2008 à 23:30
n est une variable globale : int n=1;
T[i] est une variable de type commercant
0
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
3 févr. 2008 à 23:33
Très bien. Ben ma foi je t'ai dit tout ce que j'en pensais.
Pour le troisième argument de fseek, met plutôt SEEK_SET que 0 pour être sûr.
0
maya89 Messages postés 22 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 8 juin 2010
3 févr. 2008 à 23:39
alors le code est juste comme ça ??
0

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

Posez votre question
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
3 févr. 2008 à 23:57
Si tu lis mes commentaires dans le code tu verras que non...
0
maya89 Messages postés 22 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 8 juin 2010
4 févr. 2008 à 00:06
void tableau_commercant(FILE* f,struct commercant com)
{
int i,n=1;
f=fopen("c:\\commercant.txt","r");
x=n*sizeof(com);
fseek(f,x,SEEK_SET );
fread(&com,sizeof(com),1, f);
T[i]=com;
n++;
fclose(f);
}
0
kilian Messages postés 8732 Date d'inscription vendredi 19 septembre 2003 Statut Non membre Dernière intervention 5 février 2025 1 526
4 févr. 2008 à 00:20
Donc finalement tu ne veux plus utiliser de boucle? Du coup ton code ne veut plus dire grand chose....
Et puis pourquoi n= 1?
J'ai du mal à comprendre ta logique, pourquoi tu passes la structure com en paramètre alors qu'elle est juste utilisée comme structure intermédiaire dans ta fonction?

Je pense que globalement tu voudrais arriver à ça (si je comprends ta logique):
void tableau_commercant(struct commercant T[], int n)
{  
    int i;
  FILE* f=fopen("c:\\commercant.txt","rb"); //Prend rb sous windows car tu as un fichier binaire ici.
    for(i=0; i<n; i++)
    {
        fread(&T[i],sizeof(struct commercant),1, f); //J'oubliais: pas besoin de fseek car fread avance tout seul le pointeur de fichier après lecture.
    }
     fclose(f);
} 
0