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 :

scanf


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 44
    Points
    44
    Par défaut scanf
    Salut, je voudrais lire un fichier texte de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ceci est la premiere phrase
    ceci est la deuxieme
    et ca la troisieme
    et je voudrais accéder a chaque phrase séparement. Ainsi, j'ai codé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (int i=0;i<NBPHRASES;i++)
    {
       fscanf(fich,"%s\n",&buffer);
       ShowMessage(buffer);
    }
    Seulement, le scanf s'arrete au premier espace, ce qui fait que je ne récupère que les premiers mots : ceci, ceci, et...
    Y a-til un moyen pour que le scanf prenne toute la phrase jusqu'à '\n' plutot que ' ' ??
    Merci d'avance...

  2. #2
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    Salut,

    Utilise fgets et ton problème sera résolu !!


    @+++
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    En fait, le fichier texte est plutot du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    phrase1:ceci est la premiere phrase 
    phrase2:ceci est la deuxieme 
    phrase3:et ca la troisieme
    et je ne voudrais récupérer que la partie apres les :

  4. #4
    Membre habitué Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Points : 156
    Points
    156
    Par défaut
    tu dois lire la ligne et ensuite decouper ta chaine a la main, en C ya pa de fonctions ki split
    @+
    On ne peut empêcher les vagues, mais on peut apprendre à les surfer...
    http://blog.plopix.net
    http://www.ez-france.org

  5. #5
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    Ouais, je vais faire comme ca, j'ai l'impression...
    Mais il me semble qu'il y avait un moyen de définir les caractères dans le scanf, du genre %[' ']s ou un truc comme ca...

  6. #6
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 288
    Points
    130 288
    Billets dans le blog
    1
    Par défaut
    Essaye la solution proposée à la fin de ce thread et dis-moi si ça fonctionne Il s'agit d'une option pour scanf comme celle que tu cherches.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    c'est
    %[^\n] tout sauf \n...

    ou alors %[ \ta-zA-Z0-9] tout entre espace, tab, de a à z de A à Z et de 1à9...

  8. #8
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    scanf("%[^\n]", txt);

    Ca marche impec !! Merci beaucoup !!

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par heikyn
    tu dois lire la ligne et ensuite decouper ta chaine a la main, en C ya pa de fonctions ki split
    @+
    strtok()

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

Discussions similaires

  1. gets() a la suite de scanf() -> probleme
    Par ickis dans le forum C
    Réponses: 12
    Dernier message: 14/12/2003, 20h24
  2. bp scanf...
    Par drKzs dans le forum C
    Réponses: 6
    Dernier message: 18/09/2003, 23h08
  3. PB avec scanf
    Par ché dans le forum C
    Réponses: 6
    Dernier message: 13/08/2003, 07h25
  4. [debutant]la fonction scanf
    Par kalaka dans le forum C
    Réponses: 7
    Dernier message: 01/07/2003, 15h15
  5. Réponses: 6
    Dernier message: 10/09/2002, 03h35

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