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 :

Utilisation "complexe" de l'opérateur d'adresse &a


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Par défaut Utilisation "complexe" de l'opérateur d'adresse &a
    Bonjour tout le monde!

    Voila, j'essaie d'utilisé l'opérateur d'adresse & a l'intérieur d'une boucle for (rien de complexe pour le moment). Je vous laisse le code, il vous parlera mieu qu'une tonne d'explication :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     for (i=1; i<6; i++)
    {
                                     printf("Choisissez le nom du personnage &i");
                                     scanf("%c", &groupe1.perso'&i'.nom);
                                     printf("Choisissez le metier de &grouoe1.perso'&i'.nom (1=Guerrier\n 2=Pretre\n 3=Mage)");
                                     scanf("%d", &groupe1.perso'&i'.job);
    }

    Le problème vient du '&i' dans l'affectation du scanf dans la structure.
    Existe-t-il une syntaxe pour faire ce que je désir : (utiliser l'adresse de i (donc un chiffre de 1 à 5) dans le nom d'une variable)

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Dsl j'ai pas tout compris ...

    C'est pas un problème d'adresse du tout, en fait tu veux utiliser une variable (pour simplifier, c'est pareil pour une structure) qui serait soit a_1 a_2, a_3, ... a_n

    En fait je ne vois qu'une seule solution : utilise une directive du preprocesseur avec l'opérateur ## :

    #define creer_variable(a,x) a_##x

    du coup creer_variable(nom,2) donne nom_2.

    J'espère que c'est ce que tu veux parce qu'en tout cas c'est ce que j'ai compris.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Par défaut
    Là c'est moi qui n'a pas tout compris a ce que tu a noté

    Je vais mieu m'exprimer, cette boucle sert à définir les 5 personages d'un groupe par leur nom et leur métier. Dans ma structure appelé groupe1 j'ai 5 autres structures apellées perso1 à perso5. Je veux donc utiliser la variable "i" de ma boucle for pour passer de perso1 à perso2 et ainsi de suite a chaque itération de la boucle.

    C'est peut être ce que tu ma expliqué mais mes connaissances en C sont un peu limitées . Merci quand même

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Tout d'abord, le morceau de code que tu donnes n'est pas du C. C'est du n'importe quoi. scanf() et printf() ne s'utilisent pas de cette facon. La suite dans ton livre de C prefere.
    Ensuite, la solution a ton probleme est triviale: un tableau. Ainsi, tu rempliras groupe[i].perso a chaque iteration de la boucle. Les tableaux en C sont numerotes de 0 a N - 1. Encore une fois, la suite dans ton livre de C. On n'apprend pas a programmer sur un forum.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Par défaut
    J'adore les réponses dans ce genre, merci quand même

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par podidoo
    J'adore les réponses dans ce genre
    Je suis un peu desole de la violence de ma reponse, mais je n'ai qu'une alternative. Ou bien je donne la solution, que tu copies/colles tranquillement sans rien apprendre, ou bien je te remue un peu pour que tu ailles voir, par toi meme, l'utilisation correcte de *printf() et *scanf() [avec des reserves quant a cette derniere fonction], que tu ailles voir ce qu'est un tableau et comment cela s'utilise (la regle est simple: quand on commence a numeroter les variables, c'est qu'il faut un tableau...).

    Egalement, le fait que tu utilises des structures, qui est tout de meme du C un peu avance, en disant "mes connaissances en C sont limitees" me fait penser que tu mets la charrue avant les boeufs. Il faut apprendre les choses dans l'ordre.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Utilisation "complexe" de l'opérateur d'adress
    Citation Envoyé par podidoo
    Existe-t-il une syntaxe pour faire ce que je désir : (utiliser l'adresse de i (donc un chiffre de 1 à 5) dans le nom d'une variable)
    Non. On utilise un tableau et un indice.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Par défaut
    Citation Envoyé par podidoo
    J'adore les réponses dans ce genre, merci quand même
    Pourtant c'était la bonne réponse : ton code c'est vraiment du n'importe quoi (t'inquiète, on est tous passés par là), et on utilise un tableau dans cette situation. Dans un sens, la réponse de Dazumba est beaucoup plus pertinente que celle de PRomu@ld (Désolé PRomu@ld), ton amour propre dût-il en souffrir.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 21
    Par défaut
    Me dire que mes scanf et printf sont totalement faux pas de problème, dailleurs ils ont été tapé à l'arrache façon "script shell", ca a été corrigé en 2sec. Mais bon, que j'apprenne sur un forum.. faut pas abuser, j'ai posé 2 questions en 6 mois que je me suis mis au C..

    Mon problème est résolu, ce post n'a plus aucun intéret, a++

Discussions similaires

  1. Utilisation du format $quote
    Par lhonolulu dans le forum SAS Base
    Réponses: 5
    Dernier message: 25/05/2009, 11h06

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