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 :

Creation de variables a partir de variables


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Creation de variables a partir de variables
    Alors voila je ne sais pas si c'est possible mais bon ce que je voudré faire est le suivant:

    j'ai un fichier .ini que je lis avec de code C,
    j'arrive bien a separer la chaine avant et apres le "="
    maintenant si par exemple dans le fichier il y ait marqué:

    port=2111

    que j'obtienne une variable contenant "port" et qui vodra 2111 sans avoir a tester tout les possibiliter pour chaque ligne du fichier, qq chose de dynamique. est-ce quelq'un pourait me donner un pas en avant?

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Oui, il faut que tu construises une liste (choisis ton implemententation) de paire variable/valeur en lisant le fichier ini

    Pour lire les lignes il faut utiliser fgets()
    Et apres on peut utiliser sscanf() pour récuperer la variable et la valeur
    Sinon, sans sscanf, tu peux fair une analyse "à la main", ou en t'aidant de strchr() pour chercher le signe égal.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Gruik
    Oui, il faut que tu construises une liste (choisis ton implemententation) de paire variable/valeur en lisant le fichier ini

    Pour lire les lignes il faut utiliser fgets()
    Et apres on peut utiliser sscanf() pour récuperer la variable et la valeur
    Sinon, sans sscanf, tu peux fair une analyse "à la main", ou en t'aidant de strchr() pour chercher le signe égal.
    supposons que j'ai un "char *" contenant une ligne de mon fichier .ini
    elle contient
    port=2111
    comment dois-je utiliser sscanf pour creer une variable s'appelant port contenant la valeur 2111 ?

    désolé si ma question est repetetif mais j'ai pas tres bien saisie votre reponse ...

  4. #4
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    comment dois-je utiliser sscanf pour creer une variable s'appelant port contenant la valeur 2111 ?
    Impossible en C, c'est pour ça que Gruik propose une map, un tableau associatif:
    pour appeler une donnée de ce tableau, au lieu d'utiliser un indice numérique on utilise des chaines de caractères:
    map[nom_de_la_variable].

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    char buffer[512];
    char mot[25];
    int port;
    fgets(buffer, sizeof buffer, file);
    if(buffer != NULL) {
        if(sscanf(buffer, "%s=%d", mot, &port) != 2) {
            printf("Erreur format incorrect !\n");
            return;
        }
    }
    [...];

  6. #6
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Citation Envoyé par Quatsch
    supposons que j'ai un "char *" contenant une ligne de mon fichier .ini
    elle contient
    port=2111
    Petite parenthese :
    Il faut pas dire "j'ai un char * qui contient une ligne de mon fichier" mais j'ai un "char * qui pointe sur une zone contenant une serie de caractere terminée par \0 represantant une ligne de mon fichier".

    Citation Envoyé par Quatsch
    comment dois-je utiliser sscanf pour creer une variable s'appelant port contenant la valeur 2111 ?

    désolé si ma question est repetetif mais j'ai pas tres bien saisie votre reponse ...
    Un peu de lecture :
    http://xrenault.developpez.com/tutoriels/c/scanf/

  7. #7
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Citation Envoyé par seriousme
    Impossible en C, c'est pour ça que Gruik propose une map, un tableau associatif:
    pour appeler une donnée de ce tableau, au lieu d'utiliser un indice numérique on utilise des chaines de caractères:
    map[nom_de_la_variable].
    Oui mais ça c'est du C++
    je parlais d'une liste d'elements du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #define VARIABLE_MAXLG  50
    #define VALEUR_MAXLG  50
    typedef struct {
       char variable[VARIABLE_MAXLG   + 1];
       char valeur[VALEUR_MAXLG   + 1];
    } paire;

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par seriousme
    Impossible en C, c'est pour ça que Gruik propose une map, un tableau associatif:
    pour appeler une donnée de ce tableau, au lieu d'utiliser un indice numérique on utilise des chaines de caractères:
    map[nom_de_la_variable].

    et comment cree-t-on ce tableau associatif?

  9. #9
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    On peut pas, ce sont les "map" du C++/STL qui ont leur operateur [] surchargé
    Mais en C, il faut faire à la main.

  10. #10
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct{
    char key[];
    int value;
    map* next;
    }map;

Discussions similaires

  1. Creation d une variable a partir de 2 variables
    Par asty69 dans le forum Débutez
    Réponses: 6
    Dernier message: 25/05/2011, 16h43
  2. Creation de schéma à partir de variable
    Par titounnette dans le forum Développement
    Réponses: 4
    Dernier message: 23/03/2009, 10h46
  3. Creation d'un string a partir de variables
    Par virtuadrack dans le forum C++
    Réponses: 2
    Dernier message: 06/03/2009, 22h21
  4. Réponses: 21
    Dernier message: 05/02/2006, 17h37
  5. [VB.Net] popup variables à partir d'un même bouton
    Par bubuchanwa dans le forum ASP.NET
    Réponses: 6
    Dernier message: 25/07/2005, 14h44

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