Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Projet en langage C



  1. #1
    lui

    Projet en langage C


    ------

    Salut
    comme ma question (posée hier dans ce forum) n'est pas très claire, je vais vous dire ce que je vais faire exactement:

    J'ai un projet à faire en Langage C. il consiste à faire un programme qui permet de gérer un stock d'un magasin (qq articles).
    Pour chaque article il faut créer un fichier texte qui contient: nom, catégorie, date de fabrication, pays d'origine, le nom fabricant (et d'autre informations).

    Dans le programme, il faut créer plusieurs fonctions:
    - ajouter un article
    - afficher la liste des produits
    - faire une recherche selon le pays d'origine
    - modifier un produit
    - supprimer un produit
    - les noms des fabricant doivent etre disponible (pour l'envoi de courrier)

    Pour ce faire, j'ai définie une structure "struct" en C, qui contein les champs:nom, catégorie, date de fabrication, pays d'origine,....

    La fonction qui permet d'ajouter un article crée un fichier texte , et ecrit les caractéristiques de produit dans le fichier( les champs de la structures).

    Mes Questions:

    - Comment puis je faire pour afficher la liste des produits (le nom de chaque produit)
    - Comment supprimer un article


    - Dans le structure "struct", le nom du produit est défini comme char nom[20]---->>
    Si un nom est constitué de 10 caractères, est ce que l'écriture prend réservera une taille de 10 ou de 20 (j'ai pas pris en conséderation la fin du chaine "\0")

    j'espère que cela est claire pour vous!

    MERCI d'avance

    Lui

    -----

  2. #2
    fderwelt

    Re : Projet en langage C

    Citation Envoyé par lui Voir le message
    - Dans le structure "struct", le nom du produit est défini comme char nom[20]---->>
    Si un nom est constitué de 10 caractères, est ce que l'écriture prend réservera une taille de 10 ou de 20 (j'ai pas pris en conséderation la fin du chaine "\0")
    Bonjour,

    Sur ce point précis: si ta structure déclare un char[20] elle occupera 20 octets, même s'il n'y en a que 2 ou 3 d'utilisés. Mais il serait beaucoup plus compliqué (et pas forcément rentable) de faire autrement.

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  3. #3
    Jean_Luc

    Re : Projet en langage C

    Bonjour,

    Citation Envoyé par lui Voir le message
    - Comment puis je faire pour afficher la liste des produits (le nom de chaque produit)
    En utilisant la fonction printf. Je ne sais pas comment ton programme est structuré. Je te donne un début d'exemple, j'espère que ca t'aidera un peu:

    Code:
    #define MAX 100
    
    typedef struct {
      char nom[20];
      ...
    } PRODUIT;
    
    PRODUIT Produits[MAX];
    int NombreProduit;
    
    for(int i=0;i<NombreProduit;i++) {
       printf("Nom:%s\n",Produits[i].nom);
       ...
    }
    Citation Envoyé par lui Voir le message
    - Comment supprimer un article
    Il faut écrire un algorithme qui supprime un élement du tableau Produits. Tu n'as pas vu ça en cours ?
    L'Univers est fini. Ah bon déjà ?

  4. #4
    lui

    Re : Projet en langage C

    Merci pour la réponse.
    Je n'ai pas bien compris cet exemple. Je vois pas le lien avec les fichiers TEXTE. Je travaille avec des fichier: tout les caractéristique d'un produits voivent etre ecrit dans un fichier texte correspondant au produit.

    Merci
    Lui

  5. A voir en vidéo sur Futura
  6. #5
    umfred

    Re : Projet en langage C

    Pour afficher les noms des produits, il faut d'abord lire les fichiers textes (fonction fopen pour les ouvrir et fread pour lire (sauf erreur de ma part)).
    Cette lecture permettra d'initialiser par exemple la structure PRODUIT que jean_Luc t'a proposé.

    Pour supprimer un article, une fois celui-ci connu, il faut "simplement" détruire le fichier correspondant à cet article (comparaison entre le nom de l'article à supprimer et le nom contenu dans le fichier par exemple). (je crois que la fonction est kill , à vérifier )

  7. #6
    Jean_Luc

    Re : Projet en langage C

    Citation Envoyé par lui Voir le message
    Merci pour la réponse.
    Je n'ai pas bien compris cet exemple. Je vois pas le lien avec les fichiers TEXTE. Je travaille avec des fichier: tout les caractéristique d'un produits voivent etre ecrit dans un fichier texte correspondant au produit.

    Merci
    Lui
    OK. Je n'avais pas bien compris ta question... Désolé. Mais alors qu'est ce que tu veux faire exatement ? Tu veux d'abord otenir la liste des fichiers (un fichier par produit) et ensuite afficher le nom du produit contenu dans chacun de ces fichiers ?
    L'Univers est fini. Ah bon déjà ?

  8. #7
    lui

    Re : Projet en langage C

    Premièrement je te remercie.
    Ce que je veux exactement: c'est de mettre les champs de la structure dans un fichier, et aussi les récupérer plustard. Ex: mettre dans un fichier: nom, date de fabrication, pays d'origine, .... et aussi j'aurais besoin de récupérer le pays d'origine d'un produit pour faire qq statistiques.

    Merci
    Lui

  9. #8
    umfred

    Re : Projet en langage C

    regarde du coté des fonctions que je t'ai proposé:
    -fopen
    -fread
    -fwrite
    -fclose
    (elles font partie de stdio.h)

    Jette un oeil du coté de ce site par exemple

  10. #9
    lui

    Re : Projet en langage C

    J'ai déja travaillé avec qq fonctions (fopen, fwrite, fclose).
    Ce que je veux: est ce que c'est possible de reconstituer la strauncture "struct" d'un produit à partir des données sauvgardées dans un fichier texte.

    Merci
    Lui

  11. #10
    Jean_Luc

    Re : Projet en langage C

    Citation Envoyé par lui Voir le message
    J'ai déja travaillé avec qq fonctions (fopen, fwrite, fclose).
    Ce que je veux: est ce que c'est possible de reconstituer la strauncture "struct" d'un produit à partir des données sauvgardées dans un fichier texte.

    Merci
    Lui
    Tu peux aussi utiliser la fonction fprintf() qui marche comme le printf mais pour un fichier texte.

    Pour sauvegarder la structure, tu ouvres ton fichier avec fopen (je pense que tu sais faire), tu écris chaque champ de la structure avec un fprintf en rajoutant un retour à la ligne comme séparateur ex:

    Code:
    fprintf(f,"%s\n",Produits[i].nom);
    ....
    Pour relire la strcuture, tu peux utiliser fscanf() par example:

    Code:
    fscanf(f,"%s",&(Produits[i].nom));
    ...
    Attention, si tu utlise fscanf, le champ de la sturcute à sauvegarder (ici nom) ne pourra pas contenir d'espace.
    Si tu veux gérer les espaces, il te faudra utiliser fgets ex:

    Code:
    fgets(Produits[i].nom,20,f);
    // Il faut enlever le \n qui est inclus
    (Produits[i].nom)[strlen(Produits[i].nom)-1]=0;
    ...
    Bon courage...
    L'Univers est fini. Ah bon déjà ?

  12. #11
    Jean_Luc

    Re : Projet en langage C

    Ah oui une petite chose:

    J'ai écris "fscanf(f,"%s",&(Produits[i].nom));". Dans ce cas là, c'est pas faux, mais il vaut mieux écrire:
    "fscanf(f,"%s",Produits[i].nom);". On doit passer l'adresse de début du tableau de caractère et non pas l'adresse du pointeur sur le tableau de caractère. Dans le cas présent ca n'a pas d'importance car c'est la même adresse mais attention à la confusion possible...

    Aussi, si tu veux être propre, il faut gérer correctement les erreurs:
    if( fscanf(...) != EOF )
    ou
    if( fgets()!=NULL )
    L'Univers est fini. Ah bon déjà ?

Discussions similaires

  1. Du langage
    Par docteur kilikil dans le forum Psychologies (archives)
    Réponses: 7
    Dernier message: 18/12/2007, 15h48
  2. langage c
    Par yannicklepaleo dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 31/08/2006, 22h38
Découvrez nos comparatifs produits sur l'informatique et les technologies.