IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[debutant]probleme de sauvetage en fichier binaire


Sujet :

C

  1. #21
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par diogene
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct etu 
    {
           int    mat;
           char    nom[20];
           float    cote[maxcotes];
    }       tab[maxetu]   ;
    C'est ce que tu appelles ne plus avoir de global ?
    Je ne vois pas de globales, c'est juste une structure. Tu voudrais le mettre ou ce bout de code toi ?

  2. #22
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Points : 26
    Points
    26
    Par défaut

    Je ne vois pas de globales, c'est juste une structure. Tu voudrais le mettre ou ce bout de code toi ?
    merci il me semblait aussi

  3. #23
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    tab sauf erreur de ma part est une variable déclarée en dehors de toute fonction et est du type tableau de struct etu
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #24
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    1- D'abord et surtout soigne l'indentation du programme
    2- tu définis maxetu et maxcotes : tu devrais donc les utiliser et on ne devrait pas voir de 25 ou de 3 dans ton programme. Sinon, ce n'était pas la peine
    3- supprime la variable globale tab : les variables globales ne sont pas une bonne habitude à prendre. Elles sont dangereuses dès que le programme devient un tant soit peu complexe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct etu
    {
    ....
    };
    void main ()
    {
     struct etu tab[maxetu];
    ....
    }
    et passe cette variable en argument aux fonctions.
    4- n'écris pas des choses inutiles qui peuvent troubler le lecteur. exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int  lire_float (char nbf[5])
    renvoie toujours 0. Autant qu'il ne renvoie rien! Dans cette déclaration le 5 ne sert à rien. A supprimer. Idem pour lire_int
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void  lire_float (char *nbf)
    5- Lire_mat renvoie 1 ou 2. C'est bizarre et on se demande pourquoi. Le code ne l'utilise que pour comparer à 1. D'après son code, elle cherche si le matricule existe dans le tableau, ce qui ne correspond pas à son nom. Les identificateurs doivent être choisi pour être au lecteur une source d'informations, pas pour les induire en erreur. De plus, son code est faux, puisque la valeur de trouve ne dépend que du DERNIER élément du tableau. La variable matt[5] ne sert à rien et le code est tordu : pourquoi mettre trouve à 1 pour renvoyer 2 et à 0 pour renvoyer 1 ? Il suffit de qq chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int Existe_mat ( int  m)
    {
     int i;
     for (i=0;i<maxetu;i++)
       if (m==tab[i].mat) return 1;
     return 0;
    }
    qui permet des tests du genre while(Existe_mat(-----
    6- lire_cotes : à quoi sert le else; ?
    7- init n'utilise pas maxetu et maxcotes . Son strcpy est une grosse erreur.
    8- etc ...
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #25
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par gl
    Citation Envoyé par diogene
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct etu 
    {
           int    mat;
           char    nom[20];
           float    cote[maxcotes];
    }       tab[maxetu]   ;
    C'est ce que tu appelles ne plus avoir de global ?
    Je ne vois pas de globales, c'est juste une structure.
    Huh! Nettoyage des yeux, please! 'tab' est un tableau global de structures.
    Tu voudrais le mettre ou ce bout de code toi ?
    A début du source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct etu 
    {
       int    mat;
       char    nom[20];
       float    cote[maxcotes];
    };
    Dans main()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct etu tab[maxetu];
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static struct etu tab[maxetu];
    si le tableau est trop grand.
    Et ces paramètres pour chaques fonctions qui en ont besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       f (struct etu *tab, size_t n)
    Pas de Wi-Fi à la maison : CPL

  6. #26
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    A Emmanuel : Entièrement d'accord
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  7. #27
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par diogene
    tab sauf erreur de ma part est une variable déclarée en dehors de toute fonction et est du type tableau de struct etu
    Oups, je l'avais vu a l'interieur des accolades. Effectivement c'est bien une globale.

  8. #28
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par diogene
    A Emmanuel : Entièrement d'accord
    Moi aussi ! J'avais juste lu ca trop rapidement.

Discussions similaires

  1. probleme téléchargement d'un fichier binaire
    Par airun dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 16/04/2013, 17h07
  2. probleme de lecture de fichier binaire
    Par sociopath dans le forum Windows
    Réponses: 9
    Dernier message: 14/01/2008, 14h44
  3. [debutant] probleme de fichier
    Par lamoueste dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 22/02/2006, 15h19
  4. Réponses: 11
    Dernier message: 17/11/2005, 17h13
  5. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo