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 avec fonction strtok


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 3
    Par défaut Problème avec fonction strtok
    Heu...j'ai un petit problemme

    J'arrive pas a récupérer le nombre 17 en int dans cette exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <string.h>
     
    char string[] = "benjamin :17";
    int *token;
     
    void main(void)
    {
            token = strtok(string," :");
            while (token != NULL){
                   printf("The token is:  %s\n", token);
                   token = strtok(NULL," :");
            }
     
    }
    resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    The token is:  benjamin
    The token is:  17
     
    Process returned 0 (0x0)   execution time : 0.026 s
    Press any key to continue.
    Si je change %s par %d dans le sprintf ça donne :

    resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    The token is:  4202496
    The token is:  4202506
     
    Process returned 0 (0x0)   execution time : 0.021 s
    Press any key to continue.
    Merci beaucoups

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Dans ce cas exact c'est plus simple de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char benjamin[100];
    int dix_sept;
    sscanf(string, "%s :%d", benjamin, &dix_sept);
    Sinon, pour savoir si une chaîne a l'expression d'un entier valide, utilise strtol. Une petite lecture par ici (conversion des chaînes) devrait t'aider.

  3. #3
    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 zeeek Voir le message
    Heu...j'ai un petit problemme

    J'arrive pas a récupérer le nombre 17 en int dans cette exemple:
    Je suggère de commencer par corriger ceci :
    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
     
     
    -------------- Build: Debug in hello ---------------
     
    Compiling: main.c
    Linking console executable: bin\Debug\hello.exe
    C:\dev\hello\main.c:7: warning: return type of 'main' is not `int'
    C:\dev\hello\main.c: In function `main':
    C:\dev\hello\main.c:8: warning: assignment from incompatible pointer type
    C:\dev\hello\main.c:10: warning: implicit declaration of function `printf'
    C:\dev\hello\main.c:10: warning: char format, different type arg (arg 2)
    C:\dev\hello\main.c:11: warning: assignment from incompatible pointer type
    Output size is 18.25 KB
    Process terminated with status 0 (0 minutes, 3 seconds)
    0 errors, 5 warnings
    Ce qui donne :
    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
    17
     
    #include <stdio.h>
    #include <string.h>
     
    char string[] = "benjamin :17";
    char *token;
     
    int main (void)
    {
       token = strtok (string, " :");
       while (token != NULL)
       {
          printf ("The token is:  %s\n", token);
          token = strtok (NULL, " :");
       }
       return 0;
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    The token is:  benjamin
    The token is:  17
     
    Process returned 0 (0x0)   execution time : 0.047 s
    Press any key to continue.
    Magic ...

Discussions similaires

  1. Problème avec fonctions et string/char
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 08/04/2006, 16h54
  2. Problème avec fonction
    Par Goundy dans le forum C
    Réponses: 24
    Dernier message: 01/10/2005, 20h17
  3. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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