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 :

problème de récupération de chaînes de caractères


Sujet :

C

  1. #1
    Membre du Club Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Points : 60
    Points
    60
    Par défaut problème de récupération de chaînes de caractères
    salut à tous, j'ai un problème avec un chaîne. Depuis hier, je réfléchi, je parcours Internet mais rien n'y fait!

    Mon problème est le suivant : Je communique avec un modem GSM via le port série, cela ne me pose pas de problème. Lorsque le modem est en route, il envoi des infos : \r\n+WIND: 7\r\n par exemple pour dire qu'il est connecté au réseau...
    Je récupère ces informations dans un buffer[256], qui peut contenir plusieurs messages. Afin de connaître tous les messages que j'ai reçu, j'utilise la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pointeur = strtok(buffer,"\x0D\x0A");
    qui me permet de séparer les différents éléments. C'est là que le problème intervient: Dans pointeur, j'obtient : +WIND: 7.
    J'attend justement cette information mais lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(pointeur == "+WIND: 7")
    {
    printf("****************************************");
    }
    , il n'y passe jamais. J'ai essayé toutes les formes ("+WIND: 7", '+WIND: 7', '+WIND: 7\0'.....)mais rien. J'essaye de voir le contenu de pointeur pour savoir exactement quels caractères il contient, mais je n'y arrive pas.
    Pourriez-vous m'aider, merci

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    La comparaison de chaines en C se fait avec strcmp(), pas ==.

  3. #3
    Membre du Club Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Points : 60
    Points
    60
    Par défaut
    merci pour la précision. Mais j'ai toujours un soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(strcmp(pointeur,"+WIND: 7") == 0)
    me fait planter le compilateur.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fabpeden
    merci pour la précision. Mais j'ai toujours un soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(strcmp(pointeur,"+WIND: 7") == 0)
    me fait planter le compilateur.
    Euh, ça m'étonnerait.

    Tu veux dire qu'il y a un message d'erreur ? Lequel ? As-tu inclus <string.h> ?

  5. #5
    Membre du Club Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Points : 60
    Points
    60
    Par défaut
    oui j'ai bien inclus <string.h>. En fait ça me fait une erreur Windows, la fenêtre qui apparait et qui vous demande si vous voulez afficher le rapport d'erreur.

  6. #6
    Membre du Club Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Points : 60
    Points
    60
    Par défaut
    J'ai réussi à résoudre mon erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (pointeur != NULL)
    {
              if(strcmp(pointeur,"+WIND: 7") == 0)
              {
                               printf("****************************************");
                               WriteCOM("AT+CPIN=0000\r\n", strlen("AT+CPIN=0000\r\n"), &nBytesWritten);                               
                      }
    }
    Le problème venait que quand j'utilisais strcmp avec un pointeur NULL, le compilateur plantait!

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par fabpeden
    Le problème venait que quand j'utilisais strcmp avec un pointeur NULL, le compilateur plantait!
    Le compilateur ? Certainement pas. Il faut être précis avec les termes employés, sinon, on ne comprend pas ce que tu veux dire. C'est l'exécution qui 'plantait'.

  8. #8
    Membre du Club Avatar de fabpeden
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 131
    Points : 60
    Points
    60
    Par défaut
    oui c'est l'exécution, merci pour la correction!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/05/2007, 19h35
  2. [MySQL] Problème de comparaison de chaîne de caractères
    Par Laurent64 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/05/2007, 19h04
  3. Réponses: 10
    Dernier message: 19/09/2006, 10h44
  4. [Configuration] problème de taille de chaînes de caractères
    Par Wormus dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 21/10/2005, 14h55
  5. Problème pour exécuter une chaîne de caractères
    Par Pongo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h34

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