Projet en langage C
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Projet en langage C



  1. #1
    invitee5fedd72

    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
    invite6de5f0ac

    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

  3. #3
    invite2d8d5438

    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 ?

  4. #4
    invitee5fedd72

    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
    invite2d8d5438

    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 ?

  8. #7
    invitee5fedd72

    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
    invitee5fedd72

    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
    invite2d8d5438

    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...

  12. #11
    invite2d8d5438

    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 )

Discussions similaires

  1. Du langage
    Par invitec15fc0a6 dans le forum Psychologies (archives)
    Réponses: 7
    Dernier message: 18/12/2007, 15h48
  2. langage c
    Par invite131aec15 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 31/08/2006, 22h38
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...