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 :

Découpage buffer avec sscanf


Sujet :

C

  1. #1
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut Découpage buffer avec sscanf
    Bonjour !

    J'ai un petit ennui avec sscanf
    J'ai un buffer qui contient un login et un message, et je souhaite recupérer dans deux tableaux différents le login et le message.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char buffer[144];
    char login[16];
    char msg[128];
    J'ai tout d'abord essayé de remplir le buffer de cette façon :
    login\\mon petit message
    Puis de faire un sscanf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(buffer,"%s\\%s",login,msg);
    Mais ça ne fonctionne pas, tout le buffer va dans login...(enfin ses 16 premiers octets).
    Ensuite j'ai essayé :
    login mon petit message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(buffer,"%s %s",login,msg);
    Mais c'est pas encore ça, le login est bien dans le bon tableau, mais msg[128] ne contient que le premier mot de "mon petit message"

    Merci à celui qui peut m'aider à debloquer la situation
    Sorry
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  2. #2
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    A part utiliser strtok qui est déconseillé pour beaucoup de raison, la seule façon que je vois c'est de le faire à la main et en utilisant strcpy...

  3. #3
    Membre actif Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par fearyourself
    A part utiliser strtok qui est déconseillé pour beaucoup de raison, la seule façon que je vois c'est de le faire à la main et en utilisant strcpy...
    Impossible je connais pas la taille du login

    Edit : bon en y reflechissant, c'est pas bien dur à la main...je vais faire ça
    Si je pleure encore qu'un jour tu me reviennes,
    C'est que sans toi je suis comme un Roi sans sa Reine.

  4. #4
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: Découpage buffer avec sscanf
    Bonjour,
    Citation Envoyé par sorry60
    J'ai tout d'abord essayé de remplir le buffer de cette façon :
    login\\mon petit message
    Puis de faire un sscanf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(buffer,"%s\\%s",login,msg);
    Mais ça ne fonctionne pas, tout le buffer va dans login...
    Peut être parce qu'entre guillemets, \ doit être échapé en \\ donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(buffer,"%s\\\\%s",login,msg);
    Devrait mieux marcher
    Sinon une petite fonction : Découper une chaîne et rien ne t'empêche de reprendre ce code et plutot que de stocker le résultat de strtok, tu allous un espace mémoire pour y recopier la chaîne.

  5. #5
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut

    Peut être parce qu'entre guillemets, \ doit être échapé en \\ donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sscanf(buffer,"%s\\\\%s",login,msg);
    Je ne pense pas que ça marcherait ton "%s\\\\%s"... il ne va pas faire attention...

    De toute façon, ça ne marcherait pas pour faire ce qu'il veut parce que le "%s" du message ne prendrait en compte que le premier mot (donc [b]mon(/b] dans son cas...)

Discussions similaires

  1. Réponses: 27
    Dernier message: 25/10/2006, 12h10
  2. Problème avec sscanf
    Par Goundy dans le forum C
    Réponses: 13
    Dernier message: 07/10/2006, 03h56
  3. Envoyer et recuperer des buffers avec les Socket
    Par kaderscream dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/08/2006, 11h44
  4. Utilisation du frame buffer avec Nvidia
    Par HNT dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 05/07/2006, 12h47
  5. Problème de buffer avec des int et des char
    Par Lolita59 dans le forum Réseau
    Réponses: 23
    Dernier message: 04/05/2006, 11h09

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