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 :

strtok infini


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 77
    Par défaut strtok infini
    Bonjour, j'ai un problème avec un code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    strcpy(_test,"0.2.3.4");
    pch=strtok(_test,".");
    while (pch != NULL)
    {  i++;
        num=atoi(pch);
        _I2CWrite(0xC0,i,&num,1);
        t=MS_TIMER;
       while((long)(MS_TIMER-t)<WRITE_TIME);
       pch = strtok (NULL,".");
    }
    je ne sort jamais de la boucle !!! Cela se produit a chaque fois que les digits entre les points sont des chiffres, si je remplace un d'entre eux par un nombre >=10, ca remarche !!!

    Si vous avez une idée !! Merci

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut Re: strtok infini, PERSONNE ???
    Citation Envoyé par mulot49
    Bonjour, j'ai un problème avec un code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    strcpy(_test,"0.2.3.4");
    pch=strtok(_test,".");
    while (pch != NULL)
    {  i++;
        num=atoi(pch);
        _I2CWrite(0xC0,i,&num,1);
        t=MS_TIMER;
       while((long)(MS_TIMER-t)<WRITE_TIME);
       pch = strtok (NULL,".");
    }
    je ne sort jamais de la boucle !!! Cela se produit a chaque fois que les digits entre les points sont des chiffres, si je remplace un d'entre eux par un nombre >=10, ca remarche !!!

    Si vous avez une idée !! Merci
    Il faudrait enlever le ';' après le deuxième while, je pense que ton programme marcherait mieux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       while((long)(MS_TIMER-t)<WRITE_TIME);
       pch = strtok (NULL,".");
    Des accolades ne seraient pas du luxe non plus,
    Jc

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 77
    Par défaut
    non cela ne vien pas de ca, avec deux digits ex:"10.0.1.2" ca marche bien avec le même code !!

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par mulot49
    non cela ne vien pas de ca, avec deux digits ex:"10.0.1.2" ca marche bien avec le même code !!
    Evidemment, ceci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #include <stdio.h>
    #include <string.h>
     
    int main(void)
    {
       char test [32];
       strcpy(test, "0.2.3.4");
       char *pch = strtok(test, ".");
       while (pch != NULL)
       {
          printf ("%s\n", pch);
          pch = strtok (NULL, ".");
       }
       return 0;
    }
    Mais comme ton code est incomplet, on ne peut pas le tester.

Discussions similaires

  1. [DB2] Eviter une cascade infini dans un trigger
    Par Fatah93 dans le forum DB2
    Réponses: 2
    Dernier message: 25/04/2005, 14h23
  2. Mailleure facon de realiser une association infini-infini
    Par remi_phbc dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 15/07/2004, 12h31
  3. [Socket] Pb de boucle infinie
    Par Myogtha dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 10/06/2004, 14h10
  4. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04
  5. [LG]tableau infini et fonction longueur
    Par dsr57 dans le forum Langage
    Réponses: 8
    Dernier message: 13/12/2003, 13h54

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