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 076
    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 076
    Points : 2 328
    Points
    2 328
    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.
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    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.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  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 076
    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 076
    Points : 2 328
    Points
    2 328
    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]
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

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