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 :

Sscanf et les blancs


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Sscanf et les blancs
    Bonjour,

    Voici le problème :
    Je lis un fichier texte. Je découpe mes lignes que je place dans uns structure.
    Il se peut que certaines données contiennent des espaces.
    Donc je fais ceci pour virer les espaces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf( lDP019.ref, "%s", lDP019.ref);
    Mais les espaces sont toujours présents ...

    Pourtant sscanf est censé m'enlever les blancs :
    Whitespace characters: the function will read and ignore any whitespace characters (this includes blank, newline and tab characters) encountered before the next non-whitespace character. This includes any quantity of whitespace characters (including none).
    Pouvez-vous me dire comment enlever les espaces avec sscanf ? Si ce n'est pas possible avec sscanf, comment faire ?

    Merci d'avance.

  2. #2
    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 Spyco
    Voici le problème :
    Je lis un fichier texte. Je découpe mes lignes que je place dans uns structure.
    Il se peut que certaines données contiennent des espaces.

    Si ce n'est pas possible avec sscanf, comment faire ?
    En recopiant la chaine caractères par caractères avec le filtre adéquate. (On peut même modifier la chaine directement, si elle est modifiable).

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Ok ...
    Je pensais que sscanf allait lire puis réécrire dans une autre variable avec le format qu'on lui passait.

    Je vais donc faire le traitement à la main mais c'est quand même bizarre que le sscanf ne fonctionne pas.
    Tant pis.

  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 Spyco
    c'est quand même bizarre que le sscanf ne fonctionne pas.
    Je crois que tu confonds ignore et remove ...

  5. #5
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    et comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char temp[BUFSIZ];
    sscanf( lDP019.ref," %s",temp);

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Bien vu Dark Ebola.
    En faisant comme tu dis cela fonctionne.
    Mais avec un bémol, c'est que cela ne fonctionne que si ta chaine de caractère commence par un blanc d'où ton " %s".

    Cela me suffit. Mais je pensais que le sscanf était plus générique que cela et enlevait tous les espaces.

    Merci à vous.

  7. #7
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    si tu veux VRAIMENT utiliser scanf, tu devrais lire : http://xrenault.developpez.com/tutoriels/c/scanf/

    sinon, fait le traitement a la main ... c'est pas bien compliqué ... et c'est plus mieux

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 27/04/2011, 09h32
  2. Bcp out d'une table sans les blancs de fin de chaine
    Par armor92 dans le forum Outils
    Réponses: 3
    Dernier message: 07/12/2006, 13h41
  3. Réponses: 1
    Dernier message: 25/09/2006, 11h44
  4. Réponses: 2
    Dernier message: 27/07/2006, 10h17
  5. [LG]Retirer les blancs dans une chaine
    Par Andy_24DB dans le forum Langage
    Réponses: 16
    Dernier message: 25/02/2004, 16h30

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