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 :

Partie de chaine de caractere constante, possible?


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Partie de chaine de caractere constante, possible?
    Bonjour,

    Je dois tester des chaînes de caractères du type #AA @AAM $AADI etc pour savoir laquelle a été reçue. Pour cela j'utilise
    if (strcmp(chaine_recue,"#AA")==0) {}

    Les AA sont en fait une adresse et je désirerais pouvoir utiliser le même programme et remplacer AA par l'adresse (06 par exemple) sans devoir les remplacer manuellement dans le programme.

    J'ai pensé à #define mais ça ne remplace pas dans les chaînes. Existe-t-il une solution?

    Merci.

  2. #2
    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 Re: Partie de chaine de caractere constante, possible?
    Citation Envoyé par toninlg
    Bonjour,

    Je dois tester des chaînes de caractères du type #AA @AAM $AADI etc pour savoir laquelle a été reçue. Pour cela j'utilise
    if (strcmp(chaine_recue,"#AA")==0) {}

    Les AA sont en fait une adresse et je désirerais pouvoir utiliser le même programme et remplacer AA par l'adresse (06 par exemple) sans devoir les remplacer manuellement dans le programme.

    J'ai pensé à #define mais ça ne remplace pas dans les chaînes. Existe-t-il une solution?

    Merci.
    En continuant sur l'idée des #define tu peux faire comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #define AD "AA"
     
    int main(void) {
        char test[512] = {"#"};
        strcat(test, AD); // ou sprintf si tu preferes
        return 0;
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Re: Partie de chaine de caractere constante, possible?
    Merci beaucoup. J'ai trouvé une méthode plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define AA 0x06
    const char c[6]='#',AA,'D','I';

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Et ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [...]
    #define AA "06"
    #define ADI "#" AA "DI"
    [...]
    printf("%s",ADI);
    [...]
    Non seulement c'est plus simple que de définir un tableau en devant faire attention à la taille qu'il devra avoir, mais en plus c'est plus propre qu'un tableau initialisé sans utiliser d'accolades (surtout que si tu veux utiliser strcmp() comme dit dans ton premier message, il manque un '\0' à la fin de ton tableau)...

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 47
    Points : 58
    Points
    58
    Par défaut
    Appliqué a ce qui nous intéresse ça donnerai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #define AA "0x06"
     
    if (strcmp(chaine_recue,"#" AA)==0)
    {}

Discussions similaires

  1. [VBA Excel]recup partie chaine de caractere
    Par Vanesse dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2006, 10h36
  2. Réponses: 2
    Dernier message: 21/05/2006, 19h31
  3. Réponses: 2
    Dernier message: 11/05/2006, 15h12
  4. comparaison d une partie de la chaine de caractere
    Par sneb5757 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/12/2005, 15h50
  5. Réponses: 4
    Dernier message: 18/05/2004, 13h58

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