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 :

gérer un bibliothéque


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut gérer un bibliothéque
    salu à tous, je me presente; je suis une debutante en C
    je suis entrain de créer un programme qui gére un ensemble de livres d'une petite bibliothéque
    pour cela ma phase01 est de construire une fonction qui permet de créer l'ensembles des livres dans un tableau MAX=500.
    j'ai essayer de realiser cette fonction..... ça marche pas et j'ai pas mal de question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
     
    typedef struct livre livre;
    struct livre
    {
        int Cote;
        char Titre[100];
        enum Categorie {Conte,Fiction,Policier,Roman,Histoire};
        int Annee_edition;
        int Emprunter;
     
    };
    void Creation (int taille)
    {
        int i=0; livre fiche_livre[500];
        printf(" \n\n\t CREATION D\'ENSEMBLES DES LIVRES EN COURS ...  \n\n ");
        printf("  Veuillez saisir le numero du cote ");
        scanf("%d",&fiche_livre[i].Cote);
        printf("\n\n");
        printf("  Veuillez saisir le titre du livre ");
        scanf("%s",&fiche_livre[i].Titre);
        printf("\n\n");
        printf("  Veuillez saisir la catégorie du livre ");
        scanf("%d",&fiche_livre[i].Categorie);
        printf("\n\n");
        do{
        printf("  Veuillez saisir l'annee d\'edition du livre(comprise entre 1900 et 2010) ");
        scanf("%d",&fiche_livre[i].Annee_edition);
        printf("\n\n");}while (fiche_livre.Annee_edition<1900 || fiche_livre.Annee_edition>2010);
        printf("  Veuillez priciser l'emprunte du livre ");
        scanf("%d",&L[i].Emprunter);
        printf("\n\n")
    }
     
    int main()
    {
     
    int taille=0;
    printf(" Veuillez saisir la taille du tableau ");
    scanf("%d",taille);
    Creation(taille);
        return 0;
     
    }

    Q1*pour ma struct j'ai mis
    enum Categorie {conte,Fiction,Policier,Roman,Histoire}; j'ai l'impression que c'est pas permis de faire ça dans une structure car ça plente juste au_dessous scanf("%d",&fiche_livre[i].Categorie); ?????

    Q1.2** j'ais mis aussi int Emprunter sachant que Emprunter doit etre normalemnt un booléan et la je trouve pas comment définir ce type dans un structure et puis la meme chose pour son
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("  Veuillez priciser l'emprunte du livre ");
        scanf("%d",&L[i].Emprunter);
    ????


    Q2*Maitenant passant à scanf("%s",&fiche_livre[i].Titre); là j'ai un problem quand je saisie une chainequi ne contient pas de blanc ça marche tres bien mais avec un blanc ça marche pas.J'ai essayer la fonction "GETS" mais.......je sais pas ça n'as pas marcher -peut etre un mal utilisation?-

    un aide de votre bienveillance.....des idéé pour l'amélioration je les aime bien.
    merci

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 199
    Billets dans le blog
    160
    Par défaut
    Bonjour et bienvenue,

    Pour la première question, je me suis demandé comment cela pouvait compiler. Mais bon... pourquoi pas.
    Donc, ou est le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct livre
    {
        int Cote;
        char Titre[100];
        enum Categorie {Conte,Fiction,Policier,Roman,Histoire};
        int Annee_edition;
        int Emprunter;
     
    };
    EN fait, vous ne faites que définir un enum ... mais je doute que le compilateur fasse en sorte que vous ayez une variable de ce type.
    Une correction est de définir l'énum en dehors du livre, et après, d'avoir une variable qui pourra prendre une des valeurs de l'énum:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    enum Categorie 
    {
        Conte,
        Fiction,
        Policier,
        Roman,
        Histoire
    };
     
    typedef struct livre livre;
    struct livre
    {
        int Cote;
        char Titre[100];
        enum Categorie categorie;
        int Annee_edition;
        int Emprunter;
     
    };
    Voilà. (Je ne sais plus s'il faut mettre le mot clé enum devant Categorie dans la structure, si problème il y a, essayez en premier de l'enlever).

    Q1.2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("  Veuillez priciser l'emprunte du livre ");
        scanf("%d",&L[i].Emprunter);
    Cela fonctionne ... mais acceptera tout les nombres.
    Vous pouvez toujours faire en sorte de vérifier si Emprunter est égale à 0 ou 1 ... et puis c'est tout :p
    Si c'est différent, vous boucler sur le scanf.
    (Il y a un exemple dans la FAQ -> http://c.developpez.com/faq/c/ qu'il serai très bénéfique de lire )

    Q2*Maitenant passant à scanf("%s",&fiche_livre[i].Titre); là j'ai un problem quand je saisie une chainequi ne contient pas de blanc ça marche tres bien mais avec un blanc ça marche pas.J'ai essayer la fonction "GETS" mais.......je sais pas ça n'as pas marcher -peut etre un mal utilisation?-
    J'imagine que un blanc, c'est un espace. Alors oui gets aurait pu aider ... mais gets est déprécier ( voir FAQ ). Il faut voir à utiliser fgets en lui donnant comme fichier stdin.
    Il faudra aussi limiter la taille du nom de livre à 100 caractères comme c'est la taille maximale définit dans votre structure.

    En espérant vous avoir aider
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert confirmé
    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
    Par défaut
    Quelques remarques complémentaires à celles de LittleWhite :

    - Q1 : la réponse de LittleWhite est correcte et il faut le mot clé enum. Pour s'en dispenser, utiliser un typedef :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef enum  {Conte,Fiction,Policier,Roman,Histoire} Categorie;
    typedef struct
    {
        int Cote;
        char Titre[100];
        Categorie categorie;
        int Annee_edition;
        int Emprunter;
    }livre;
    - Sur la question de l'enum, un autre problème (assez vicieux) va se poser : Il ne faut pas confondre le type d'une variable enum du type des constantes de l'énumération (ces constantes sont de type int).
    Lorsqu'on définit une variable de type enum, comme ici le champ categorie, on va créer en fait une variable d'un type entier. Par contre, le type entier exact utilisé est à la discrétion du compilateur utilisé qui a pour seule contrainte que le type (entier, signé ou non) qu'il utilise puisse représenter toutes les valeurs définies dans l'énumération. On ne doit donc jamais présumer que le type de ces variables a une taille fixée à priori. Or c'est ce qui est fait ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%d",&fiche_livre[i].categorie);
    qui n'est valable que si le champ categorie est un int. Or, vu la définition de l'enum, le compilateur peut très bien avoir fait le choix d'un (unsigned) char et le code va planter.
    On doit passer par une variable auxiliaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int entier;
    scanf("%d",&entier);
    fiche_livre[i].categorie = entier;
    -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%s",&fiche_livre[i].Titre);
    Le champ Titre est un tableau et il n'y a pas de raison à la présence du & (qui est une erreur sans conséquences ici)
    Effectivement %s s'arrête au premier caractère "blanc". Une possibilité est d'utiliser fgets() effectivement, mais il faut savoir que fgets transfère le '\n' qu'il faudra éliminer et conserve les blancs qui précèdent la chaine qu'il faudra également éliminer si il y en a .
    On peut aussi utiliser le format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf(" %99[^\n]%*c",fiche_livre[i].Titre);// noter le blanc en début de format
    qui lira la ligne en sautant les blancs qui précèdent la chaine et s'arrête à la fin de ligne qui n'est pas stockée.
    Que ce soit avec cette méthode ou avec le fgets(), les blancs qui peuvent éventuellement suivre la fin de la chaine sont considérés comme faisant partie de celle-ci.

    - Le code comporte encore d'autres erreurs :
    * le tableau local fiche_livre est irrécupérable
    * le code suivant est faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       while (fiche_livre.Annee_edition<1900 || fiche_livre.Annee_edition>2010);// fiche_livre[i]....
    ...
        scanf("%d",&L[i].Emprunter);  // L ??????????

  4. #4
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Par défaut
    Bonjour ,
    je veux savoir est ce que le numéro de cote peut etre superieur à max ou pas ?
    merci .

  5. #5
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    LA SUITE .............

    MA dexieume phase est d'ecrire une fonction qui permet de sauvegarder le tableau trié d'apres la cote dans un fichier
    ce que je vois pas tres clair est ce que le tableau contient que le numero de cote ou bien tout la fiche du livre la structure au_dessus
    que pensez vous en fait l'ennoncé n'est pas clair du tout

    Je cherche des idéés dans les deux ças,
    moi j'ai pensé pour le 1ier ças de placer un tableau dans la fonction creation -au_dessu- qui se remplit à chaque saisie du numero de cote mais ça n'as pas marcher -trop parler voila le code-


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    #include <stdio.h>
    #include <stdlib.h>       /*tout ça rien veuillez jeter u coup d'oeil dans*/
    #include <string.h>          /*la focntion Creation*/
    #include <conio.h>
    typedef enum Categorie Categorie;
    enum Categorie {Conte,Fiction,Policier,Roman,Histoire};
    typedef enum Boolean Boolean;
    enum Boolean { Oui,Non};
    typedef struct livre livre;
    struct livre
    {
        int Cote;
        char Titre[100];
        Categorie  categorie;
        int Annee_edition;
        Boolean Emprunter;
     
    };
    void Creation (int taille,livre fiche_livre[]);
     
    int main()
    {
     
    int i=0,taille=0; livre fiche_livre[500]; livre *point=&fiche_livre;
    printf(" Veuillez saisir la taille du tableau ");
    scanf("%d",&taille);
    Creation(taille,point);
     
     
        printf("        \n\n\t LA LISTE DES FICHES LIVRES ...  \n\n ");
        for (i=0;i<taille;i++)
      {
        printf("                \tFICHE_LIVRE NUMERO %d\n\n\n",i            );
        printf("   Numero de cote:%d \n\n ",fiche_livre[i].Cote             );
        printf("  Titre du livre:%s \n\n ",fiche_livre[i].Titre             );
        switch (fiche_livre[i].categorie)
        {
            case 0:
               printf("  Categorie du livre: conte \n\n");
               break;
            case 1:
               printf("  Categorie du livre: Fiction \n\n");
               break;
            case 2:
                printf("  Categorie du livre: policier \n\n");
                break;
            case 3:
                printf("  Categorie du livre: roman \n\n   ");
                break;
            case 4:
                printf("  Categorie du livre: histoire \n\n" );
                break;
        }
         printf("   Annee d\'edition:%d\n\n",fiche_livre[i].Annee_edition);
          switch (fiche_livre[i].Emprunter)
        {
            case 0:
               printf("   le livre est: emprunte \n");
               break;
            case 1:
               printf("   le livre est: disponible\n");
               break;
        }
     
         printf("\n\n");
          }
     
     
    return 0;}
     /* **********voila ma fonction CREATION***************/
     
     
    void Creation (int taille,livre fiche_livre[])
    {
        int i=0,choix=0, choix2=0; char titre[100]; livre *T;
        printf(" \n\n\t CREATION D\'ENSEMBLES DES LIVRES EN COURS ...  \n\n ");
        for (i=0;i<taille;i++)
      {
        printf("                \tLIVRE NUMERO %d\n\n\n",i            );
        printf("  Veuillez saisir le numero du cote "                 );
        scanf("%d",&fiche_livre[i].Cote                               );
        T[i]=&(fiche_livre[i].Cote);
        printf("\n\n");
        printf("  Veuillez saisir le titre du livre ( max.100 ) ");
        gets(titre);
        gets(fiche_livre[i].Titre);
        printf("\n\n");
        do{
        printf("  Veuillez saisir la categorie du livre\n\n");
        printf("                       0.Conte (0)\n"       );
        printf("                       1.Fiction (1)\n"     );
        printf("                       2.Policie (2)\n"     );
        printf("                       3.Roman (3) \n "     );
        printf("                      4.Histoire (4)\n"     );
        scanf("%d",&choix);}while (choix < 0 || choix > 5);
        fiche_livre[i].categorie=choix;
        printf("\n\n");
        do{
        printf("  Veuillez saisir l'annee d\'edition du livre (comprise entre 1900 et 2010) ");
        scanf("%d",&fiche_livre[i].Annee_edition);
        printf("\n\n");} while (fiche_livre[i].Annee_edition<1900 || fiche_livre[i].Annee_edition>2010);
        do{
        printf("  Veuillez priciser l'emprunte du livre\n\n "  );
        printf("               =====> 0.Emprunte(0)\n"       );
        printf("                =====> 1.Disponible(1)\n"      );
        scanf("%d",& choix2);} while (choix2 < 0 || choix2>1);
        fiche_livre[i].Emprunter=choix2;
        printf("\n\n");
      }
    }

  6. #6
    Expert confirmé
    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
    Par défaut
    - Ce n'est pas utile d'économiser des lignes de code. Il est de beaucoup préférable de rendre le code lisible et clair ce qui n'est pas le cas ici (mauvaise indentation, multiples déclarations sur une même ligne, fermeture des blocs en fin de ligne,...).
    Pour le confort des lecteurs, une remise en forme du code proposé (moins les déclarations)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    int main()
    {
       int i=0;
       int taille=0;
       livre fiche_livre[500];
       livre *point=&fiche_livre;
     
       printf(" Veuillez saisir la taille du tableau ");
       scanf("%d",&taille);
       Creation(taille,point);
       printf("        \n\n\t LA LISTE DES FICHES LIVRES ...  \n\n ");
       for (i=0;i<taille;i++)
       {
          printf("                \tFICHE_LIVRE NUMERO %d\n\n\n",i            );
          printf("   Numero de cote:%d \n\n ",fiche_livre[i].Cote             );
          printf("  Titre du livre:%s \n\n ",fiche_livre[i].Titre             );
          switch (fiche_livre[i].categorie)
          {
            case 0:
               printf("  Categorie du livre: conte \n\n");
               break;
            case 1:
               printf("  Categorie du livre: Fiction \n\n");
               break;
            case 2:
                printf("  Categorie du livre: policier \n\n");
                break;
            case 3:
                printf("  Categorie du livre: roman \n\n   ");
                break;
            case 4:
                printf("  Categorie du livre: histoire \n\n" );
                break;
          }
          printf("   Annee d\'edition:%d\n\n",fiche_livre[i].Annee_edition);
          switch (fiche_livre[i].Emprunter)
          {
            case 0:
               printf("   le livre est: emprunte \n");
               break;
            case 1:
               printf("   le livre est: disponible\n");
               break;
          }
          printf("\n\n");
       }
       return 0;
    }
     /* **********voila ma fonction CREATION***************/
    void Creation (int taille,livre fiche_livre[])
    {
        int i=0;
        int choix=0;
        int choix2=0;
        char titre[100];
        livre *T;
     
        printf(" \n\n\t CREATION D\'ENSEMBLES DES LIVRES EN COURS ...  \n\n ");
        for (i=0;i<taille;i++)
        {
           printf("                \tLIVRE NUMERO %d\n\n\n",i            );
           printf("  Veuillez saisir le numero du cote "                 );
           scanf("%d",&fiche_livre[i].Cote                               );
           T[i]=&(fiche_livre[i].Cote);
           printf("\n\n");
           printf("  Veuillez saisir le titre du livre ( max.100 ) ");
           gets(titre);
           gets(fiche_livre[i].Titre);
           printf("\n\n");
           do
           {
              printf("  Veuillez saisir la categorie du livre\n\n");
              printf("                       0.Conte (0)\n"       );
              printf("                       1.Fiction (1)\n"     );
              printf("                       2.Policie (2)\n"     );
              printf("                       3.Roman (3) \n "     );
              printf("                      4.Histoire (4)\n"     );
              scanf("%d",&choix);
           }while (choix < 0 || choix > 5);
           fiche_livre[i].categorie=choix;
           printf("\n\n");
           do
           {
              printf("  Veuillez saisir l'annee d\'edition du livre (comprise entre 1900 et 2010) ");
              scanf("%d",&fiche_livre[i].Annee_edition);
              printf("\n\n");
           } while (fiche_livre[i].Annee_edition<1900 || fiche_livre[i].Annee_edition>2010);
           do
           {
              printf("  Veuillez priciser l'emprunte du livre\n\n "  );
              printf("               =====> 0.Emprunte(0)\n"       );
              printf("                =====> 1.Disponible(1)\n"      );
              scanf("%d",& choix2);
           } while (choix2 < 0 || choix2>1);
           fiche_livre[i].Emprunter=choix2;
           printf("\n\n");
        }
    }

    - Toujours la même erreur (et le compilateur a dû la signaler) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int i=0,taille=0; livre fiche_livre[500]; livre *point=&fiche_livre;
    &fiche_livre n'est pas un livre* mais un livre (*)[500]. D'ailleurs point est inutile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Creation(taille,fiche_livre);
    - erreurs (et le compilateur a dû râler) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void Creation (int taille,livre fiche_livre[])
    {
    ...
        livre *T;
    ...                            
           T[i]=&(fiche_livre[i].Cote);
    T n'est pas initialisé, donc T[i] n'a pas de sens
    T[i] est un livre alors que &(fiche_livre[ i].Cote) est un int*. Rien à voir

    - Ne pas utiliser gets(), mais fgets()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           gets(titre);
           gets(fiche_livre[i].Titre);
    et pourquoi deux lectures ?

  7. #7
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    J'AI PAS COMPRIS que veut dir livre(*)[500]?????
    * toujours pas compris et j'ai du mal avec l'utilisation des pointeurs pourquoi j'ai pas besoin ici d'un pointeur :: creation(taille,fiche_livre) alors dans le prototype de ma fonction je doit la donner normalement un pointeur????

    T n'est pas initialiser donc T[i] n'est pas de sens
    j'ai pas compris doit_je initialiser mon T=NULL pour que ça marche??? si oui j'ai essayer mais ça marche paaaaasss

    pour la derniere remarque la repitition c'est juste une astuce car si je fait une seul dans l'exucution il me donne pas la main pour la saisie , genre il saute cette étape ; je ne sais plus pourquoi .

    pour le fgets j'ai essayer fgets(fichier_livre[i].Titre) mais un message me dit TOO MANY ARGUMENTS TO FUNCTIONS FGETS

  8. #8
    Expert confirmé
    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
    Par défaut
    J'AI PAS COMPRIS que veut dir livre(*)[500]?????
    D'après les définitions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    livre fiche_livre[500];
    - fiche_livre est un tableau de 500 livre
    - &fiche_livre est donc l'adresse d'un tableau de 500 livre.
    - Le type "adresse d'un tableau de 500 livre" s'écrit en C : livre(*)[500] qui est un type différent de livre *, le type de point.

    j'ai pas compris doit_je initialiser mon T=NULL pour que ça marche??? si oui j'ai essayer mais ça marche paaaaasss
    Il ne s'agit pas de faire n'importe quoi. Pour pouvoir écrire T[i], il faut que T soit l'adresse d'un (tableau d')objet(s) livre valide(s) ce que n'est pas NULL.
    Dans ton code de Creation (), il n'a pas été créé d'objet livre.

    pour la derniere remarque la repitition c'est juste une astuce car si je fait une seul dans l'exucution il me donne pas la main pour la saisie , genre il saute cette étape ; je ne sais plus pourquoi .
    Il faut vider le buffer clavier après la lecture précédente. Consulter la FAQ pour savoir comment faire.


    pour le fgets j'ai essayer fgets(fichier_livre[i].Titre) mais un message me dit TOO MANY ARGUMENTS TO FUNCTIONS FGETS
    Quand on ne connait pas bien une fonction, la première chose est de lire sa documentation pour savoir exactement ce qu'elle fait et les arguments qu'on doit lui fournir.

  9. #9
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    la suite ...........

    ma 3eme phase est d'ecrire une fonction afin de sauvgarder mon tableau trié dans un fichier à condition que cette sauvegarde est declenché soit
    *à la fin de la creation -<taille valeur="ttpetit">la fonction tout au debut-</taille>
    *par le choix de lutilisateur
    *apres modification

    bref, ce que j'ai maintenant comme idéé :euh: :euh: est de charger tout le tableau d'un seul coup dans le fichie .
    ..j'ai essayer avec ce code mais ça marche pas... quand je veux restaurer mon tableau il me renvoi juste numero 1 :o :o



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    int main()
    {
       FILE* fichier=NULL;
       fichier = fopen("fichier.txt","wb");
       int taille=0; int i=0;
       livre fiche_livre[500]={0};
       printf(" Veuillez saisir la taille du tableau ");
       scanf("%d",&taille);
       Creation(taille,fiche_livre);
       tri (fiche_livre,taille);
       for (i=0;i<3;i++)
          {
           fwrite(fiche_livre,sizeof(livre),1,fichier);
              }
              fclose(fichier);
        fichier = fopen("fichier.txt","rb");
        for (i=0;i<3;i++)
        {
            fread(&fiche_livre[i],sizeof (livre),1,fichier);
        }
        fclose(fichier);
     
        //AFFICHAGE(taille,fiche_livre);
     
     
       return 0;
    }
    que pensez vous du choix de mode "rb"?????? mon choix est hasard!!



    euh ...en realité je vois pas tres clair comment faire pour travailler sur ces condition .....DES idéés??? si ça vous gene pas!!!
    *à la fin de la creation
    *par le choix de lutilisateur
    *apres modification

    merci

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 199
    Billets dans le blog
    160
    Par défaut
    Citation Envoyé par sali2801 Voir le message
    pourquoi personne n'a repondu j'en vraiment besoin de l'aide
    Personnellement, je n'arrive pas toujours à vous comprendre en fait.

    Pour 'rb' ou 'wb', il suffit de lire la documentation -> http://man.developpez.com/man3/fopen.3.php

    Sinon par le choix de l'utilisateur, on peut s'imaginer à faire un menu.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Personnellement, je n'arrive pas toujours à vous comprendre en fait.

    .
    de quel coté??

    j'ai lu et relu mais execuser moi je vois pas "mode binaire"??? ça veut dire des 010101010 ????

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 199
    Billets dans le blog
    160
    Par défaut
    [quote=sali2801;5868883]de quel coté??[quote]
    Bah presque tout le message. Je ne sais pas trop ce que vous devez faire ... je ne sais pas où vous bloquez et je ne sais pas trop ce que vous vous ne comprenez pas

    j'ai lu et relu mais execuser moi je vois pas "mode binaire"??? ça veut dire des 010101010 ????
    Oui ...
    Mais je vous conseille très vivement de commencer en mode texte pour des raison de facilité et que c'est plus facile pour debugguer.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. [Bibliothèque] Gérer l'importation template
    Par Xahell dans le forum Bibliothèques
    Réponses: 8
    Dernier message: 05/03/2009, 14h55
  2. Bibliothèque pour gérer Ethernet, Bluetooth etc.
    Par zmatz dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 26/01/2009, 18h11
  3. Quelle bibliothèque pour gérer des polices de caractères ?
    Par khayyam90 dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 04/01/2008, 21h35
  4. Quelle bibliothèque pour gérer des contours actifs ?
    Par khayyam90 dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 06/12/2006, 14h58
  5. Créer et gérer une bibliothèque d’icônes
    Par Furius dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 15/11/2005, 18h54

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