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 :

Comment nommer une chaine de caractères (char ou int ) avec le contenu d'une variable ?


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut Comment nommer une chaine de caractères (char ou int ) avec le contenu d'une variable ?
    Bonjour,

    J'ai une question qui peut paraitre simple mais je ne sais pas comment faire :

    J'ai besoin de declarer 2 très longues séries de chaines de caractères avec char, puis avec int

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char h1_1[3] ;
    char h2_1[3] ;
    char h3_1[3] ;
    char h4_1[3] ;
    char h5_1[3] ;
    ...
    char h100_1[3] ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char h1_2[3] ;
    char h2_2[3] ;
    char h3_2[3] ;
    char h4_2[3] ;
    char h5_2[3] ;
    ...
    char h100_2[3] ;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int h1_1;
    int h2_1;
    int h3_1;
    int h4_1;
    int h5_1;
    ...
    int h100_2;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int h1_2;
    int h2_2;
    int h3_2;
    int h4_2;
    int h5_2;
    ...
    int h100_2;
    Dans mon programme je récupère le contenu de 2 textboxes , leurs contenus respectifs sont récupérés et stockés dans argv[2] et argv[4]

    Est il possible de reprendre le contenu de argv[2] et argv[4] afin de s'en servir pour pointer et nommer une chaine de caractère précedemment définie par char ou int ?


    Exemple :

    Partons sur le fait que argv[2] contienne 90 et que argv[4] contienne 2

    je voudrai pouvoir reprendre le "90" et le 2 et les mettre dans le nom de ma variable pour ensuite effectuer une opération de copie par exemple :

    strcpy(h_90_2, test);



    Sur le même principe, peut-on également faire cela avec des chaines numériques déclarée par des int ?

    Dans la ligne ci-dessous, il faudrait argv[2] et argv[4] viennent prendre place ainsi : h_argv[2]_argv[4]

    pour qu'ensuite le compilateur puisse interpreter : h_90_2

    Mon but final étant de transformer un char en int selon le contenu de argv[2] et argv[4] :


    Est possible de faire cela ?
    Je vous remercie de votre aide,

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 338
    Points
    2 338
    Par défaut
    J'ai un peu du mal a voir ce que tu veux faire.

    J'ai deja voulu "jouer" comme tu veux le faire avec les noms de variable, mais la reponse du prof a été sans appel : impossible a faire, un nom de variable est fixé, on ne peut pas le ré-appelé comme ca.

    Une possibilité serai de faire un switch, mais avec le nombre que tu as ...
    d'ailleurs, pourquoi ne pas faire un tableau 2D ?

  3. #3
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par lcoulon Voir le message
    J'ai besoin de declarer 2 très longues séries de chaines de caractères avec char, puis avec int

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char h1_1[3] ;
    char h2_1[3] ;
    char h3_1[3] ;
    char h4_1[3] ;
    char h5_1[3] ;
    ...
    char h100_1[3] ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char h1_2[3] ;
    char h2_2[3] ;
    char h3_2[3] ;
    char h4_2[3] ;
    char h5_2[3] ;
    ...
    char h100_2[3] ;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int h1_1;
    int h2_1;
    int h3_1;
    int h4_1;
    int h5_1;
    ...
    int h100_2;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int h1_2;
    int h2_2;
    int h3_2;
    int h4_2;
    int h5_2;
    ...
    int h100_2;
    Comme ça à froid, je te conseillerais d'utiliser des tableaux à la place de toutes ces variables.

  4. #4
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Attention tu ne peux pas avoir deux variables avec le même identifiant (même si elles sont de type différent)

    Le contenu des variables est connu à l'exécution et pas avant (phase de compilation), il est possible de concaténer des identifiants mais pas leur contenu.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par lcoulon Voir le message
    je voudrai pouvoir reprendre le "90" et le 2 et les mettre dans le nom de ma variable pour ensuite effectuer une opération de copie par exemple :

    strcpy(h_90_2, test);
    Impossible à l'exécution. On peut éventuellement le faire à la compilation via des macros de préprocesseur, mais pas à l'exécution en tout cas.
    Pour résoudre ton problème, pas le choix : passer par des tableaux est la seule solution viable et fiable.

    Donc, ta liste de variables devient quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char h_char[100][2][3] ;
    int h_int[100][2] ;
    Et là, tu pourras (après conversion de texte vers numérique de argv[2] et argv[4]) utiliser directement tes deux paramètres de ligne de commande comme des indices de tableau.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    Je vous suivais bien pour :


    mais pourquoi faire un tableau en 3D ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char h_char[100][2][3] ;
    avec les int, ce n'est pas possible n'est ce pas ?

  7. #7
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 338
    Points
    2 338
    Par défaut
    Tu peux faire des tableaux de n'importe quelle dimension de n'importe quelle type.

    Dans son tableau 3D :

    char h_char[100][2][3] ;


    la premiere dimension represente tes 100 chaine
    La deuxime represente les serie (h*_1 et h*_2)
    La troisieme represente les trois char stocker.


    Cela a garder l'ordre d'ecriture :

    h_90_2
    est en fait

    h_char[90][2]

  8. #8
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    mais pourquoi faire un tableau en 3D ?
    Parce que tu utilise tes variables tableaux avec deux "indices" en plus :

    char h1_1[3] <--> h_char[1-1][1-1][3]
    ...
    char h5_1[3] <--> h_char[5-1][1-1][3]
    ...
    char h100_2[3] <--> h_char[100-1][2-1][3]

    avec les int, ce n'est pas possible n'est ce pas ?
    C'est la même chose :

    int h5_1 <--> h_int[5-1][1-1]

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/05/2008, 10h34
  2. Réponses: 2
    Dernier message: 02/10/2007, 11h42
  3. [VB6] Parser XML contenu dans une chaine de caractère
    Par pegase06 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/09/2007, 11h35
  4. Réponses: 12
    Dernier message: 15/12/2006, 00h06
  5. Réponses: 5
    Dernier message: 22/06/2006, 17h19

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