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 :

Passage de structure en paramètre


Sujet :

C

  1. #1
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut Passage de structure en paramètre
    bonjour à tous , voici mon problème :
    j'écris actuellement en Java un générateur de code C.
    Je dois générer des fichiers C donc, mais un problème se pose à moi: je génère du code de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    fprintf( fichier_l, "   OBJECT               = COLUMN                                              \r\n");
    fprintf( fichier_l, "      NAME              = \"NB_ECH\"                                          \r\n");
    fprintf( fichier_l, "      DATA_TYPE         = \"ASCII_INTEGER\"                                   \r\n");
    stringbuf = ALLOUE (char, SHORT_SIZE);
    sprintf( stringbuf , "      START_BYTE        = %d", var2_START_BYTE);
    strcat(stringbuf,blanks);
    fprintf(fichier_l, "%.78s\r\n", stringbuf);
    LIBERE (char,stringbuf);
    LIBERE et ALLOUE sont des macros définies, ce n'est pas le pb...
    On remarque que ce ne sont que des fprintf mais des fois il y a des variables ( var2_START_BYTE ici).
    On me demande de mettre ce dans une fonction qui prendrait en paramètre une structure qui contient simplement toutes les variables (ici var2...). Je ne sais pas trop comment m y prendre car celui qui appelle la fonction ne connais pas la structure ... est-ce que je peux renvoyer la structure avec un simple return ??

    je me suis mal exprimé je pense , j'espère que c'est quand mêm compréhensible

    merci à tous
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Citation Envoyé par jojodu31 Voir le message
    je me suis mal exprimé je pense , j'espère que c'est quand mêm compréhensible

    Effectivement c'est pas très clair.

    Ta fonction devra faire quoi ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    bon j'ai l esprit reposé je vais donc m'exprimer mieux ...j'espère
    en fait on se moque ce que contient ma fonction. Ce que je me demande c'est
    1/ si j'ai une fonction comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void Fonction ( struct *maStruct){
          // du code...
    }
    comme faire quand l'utilisateur ne connais pas la définition de cette structure ? Peux- t il en créer une vide et la passer en paramètre, et ensuite ma fonction remplira les champs ?

    2/ Peux t on faire un return d'une structure ? Si oui ça règle tout mon problème
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  4. #4
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par jojodu31 Voir le message
    bon j'ai l esprit reposé je vais donc m'exprimer mieux ...j'espère
    en fait on se moque ce que contient ma fonction. Ce que je me demande c'est
    1/ si j'ai une fonction comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void Fonction ( struct *maStruct){
          // du code...
    }
    comme faire quand l'utilisateur ne connais pas la définition de cette structure ?
    Qu'entends tu par "tu ne connais pas la définition de cette structure"? C'est à dire que tu ne connais pas les champs qui la compose?

    Peux- t il en créer une vide et la passer en paramètre, et ensuite ma fonction remplira les champs ?
    Oui tu peux! Tu déclares un pointeur sur ta structure et tu le passes en paramètres de ta fonction. Ensuite ta fonction initialise les champs.

    2/ Peux t on faire un return d'une structure ? Si oui ça règle tout mon problème
    Oui on peut mais si la structure est trop importante en taille, il est préférable de passer par un pointeur sur la structure.

  5. #5
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    Qu'entends tu par "tu ne connais pas la définition de cette structure"? C'est à dire que tu ne connais pas les champs qui la compose?
    c'est exactement ça !
    du coup s'il ne connait pas les champs je ne vois pas comment il peux faire pour créer une structure de ce type

    peut être pourriez vous me fournir une fonction toute petite qui me montre un exemple de fonction de ce type , et son appel ?
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  6. #6
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par jojodu31 Voir le message
    c'est exactement ça !
    du coup s'il ne connait pas les champs je ne vois pas comment il peux faire pour créer une structure de ce type
    Pourquoi tu parles à la 3ieme personne du singulier? "Il", c'est qui? toi, un utilisateur du logiciel que tu développes, un développeur?
    Peux tu expliquer comment fonctionne le logiciel en question? Apparemment le logiciel demande des saisies opérateurs et toi tu dois les stocker dans une structure, c'est cela? Ensuite, tu dois faire un traitement derrière à l'aide de ta fonction qui prends en paramètre ta structure?

    peut être pourriez vous me fournir une fonction toute petite qui me montre un exemple de fonction de ce type , et son appel ?
    Par exemple:
    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
     
    struct MaStructure {
    	unsigned char Jour;
            unsigned char Mois;
    	unsigned int Annee;
    };
     
    void Fonction ( struct *maStruct)
    {
          maStruct->Jour = 12;
          maStruct->Mois = 12;
          maStruct->Annee = 1212;
    }
     
    int main(void)
    {
         struct MaStructure *maStruct = malloc(sizeof(*maStruct));
         Fonction (maStruct);
    }

  7. #7
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    Peux tu expliquer comment fonctionne le logiciel en question?
    je ne peux pas en dire plus sinon je devrai vous tuer

    par contre la suite de ton message répond parfaitement à ma question merci bcp c'étais pas grand chose mais ça me turlupinait ( ça alors turlupiner est un mot qui existe.. on en apprend tt le tps ici )

    bonne journée et merci encore
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/03/2014, 23h10
  2. Réponses: 4
    Dernier message: 08/11/2012, 15h11
  3. Passage d'une structure en paramètre
    Par NeraOne dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/05/2007, 18h16
  4. Passage de structure en paramètre
    Par pegase.90 dans le forum C
    Réponses: 16
    Dernier message: 16/04/2007, 15h56
  5. Réponses: 2
    Dernier message: 15/09/2004, 18h17

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