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 :

Utilisation de strtok


Sujet :

C

  1. #1
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut Utilisation de strtok
    Bonjour à tous et à toutes,

    j'ai une question concernant le code que voici:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    const char *sep=" /";
    while(1)
    	{
     
    		//**************** On récupère les données du client ***********
    		if( (ns= accept(sock_serv, (struct sockaddr *) sock_ns, &nslen)) < 0)
    			erreur("Accept impossible! \n");
     
    		if((read(ns,r_mesg, sizeof r_mesg)) < 0)
    			erreur("Read impossible\n");
     
    		if( (gethostname(hostname,sizeof hostname)) < 0)
    			erreur("Nom machine inconnu!");
     
    		sprintf(c_ip,"%s", inet_ntoa(sock_ns->sin_addr));
    		c_port= sock_ns->sin_port;
    		printf("CLIENT: %s (ip: %s:%d)\n",hostname, c_ip,c_port);
     
    		printf("Read :\n%s\n",r_mesg);
     
    		char *test = strdup(r_mesg);
    		strtok(test,sep);
    		printf("SECOND: %s", strtok(NULL, sep));
     
    		free(test);
     
    		close(ns);
    	}
    En fait ce code ne m'affiche pas le dernier printf dans la console, ex:

    Citation Envoyé par $ explorweb 4444
    CLIENT: nono (ip: 127.0.0.1:917)
    Read :
    GET /test HTTP/1.1
    Host: localhost:4444
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.7) Gecko/20060830 Firefox/1.5.0.7 (Debian-1.5.dfsg+1.5.0.7-2)
    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Si quelqu'un aurait une idée, parce que je chercher et sèche depuis plus d'une heure

    d'avance

    [edit] En fait je cherche capturer une partie de l'URL ( ici le /test )
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  2. #2
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Ajoute un '\n'

  3. #3
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    Est ce que tu recois bien "test" ?

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Arf, tout ça pour ça

    En effet ça fonctionne mieux

    Mais je peux savoir pourquoi il faut un \n pour que le résultat s'affiche?

    encore

    [edit] je mets dès que j'aurai ma réponse
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par buchs
    Arf, tout ça pour ça

    En effet ça fonctionne mieux

    Mais je peux savoir pourquoi il faut un \n pour que le résultat s'affiche?

    encore

    [edit] je mets dès que j'aurai ma réponse
    Les entrées sorties avec printf sont bufferisées, le buffer se vide (donc le texte s'affiche) si :
    • Il est plein
    • Tu fais appelle à la fonction fflush
    • Le caractère de fin de ligne ('\n') est rencontré



  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Merci pour toutes ces explications

    Bon dimanche
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par gege2061
    Les entrées sorties avec printf sont bufferisées, le buffer se vide (donc le texte s'affiche) si :
    • Il est plein
    • Tu fais appelle à la fonction fflush
    • Le caractère de fin de ligne ('\n') est rencontré
    Pour completer la liste, dans le cas d'un flux de sortie ouvert par le programme (fopen), le buffer est egalement vide lors de sa fermeture.

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par gege2061
    Les entrées sorties avec printf sont bufferisées, le buffer se vide (donc le texte s'affiche) si :
    • Il est plein
    • Tu fais appelle à la fonction fflush
    • Le caractère de fin de ligne ('\n') est rencontré


    Il y a différents niveaux de bufferisation. Ce que tu décris est le cas de bufferisé par ligne. Un flux peut aussi ne pas être bufferisé (auquel cas tout est transmis de suite à l'OS) ou complètement bufferisé (un \n ne vas pas vider le buffer).

  9. #9
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Il y a différents niveaux de bufferisation. Ce que tu décris est le cas de bufferisé par ligne. Un flux peut aussi ne pas être bufferisé (auquel cas tout est transmis de suite à l'OS) ou complètement bufferisé (un \n ne vas pas vider le buffer).
    Effectivement, merci pour cette précision

    man setbuf

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

Discussions similaires

  1. Utilisation de strtok
    Par carkiasis dans le forum C
    Réponses: 5
    Dernier message: 08/10/2010, 15h13
  2. utilisation fonction strtok
    Par john123 dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2007, 11h58
  3. utilisation de strtok
    Par ghostdog dans le forum C
    Réponses: 9
    Dernier message: 25/10/2005, 08h54
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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