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 :

probleme de fgets


Sujet :

C

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    D�cembre 2005
    Messages
    105
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2005
    Messages : 105
    Par d�faut probleme de fgets
    Bonsoir,

    question rapide! je voulais utiliser la fonction fgets pour pouvoir permettre de rentrer une ligne avec des espace.

    Je proc�de donc de la mani�re suivante:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    char saisie[30];
    fgets(saisie, sizeof saisie, stdin);
    Je n'ai pas d'erreur de compilation, tout marche bien mais lorsqu'il passe sur le fgets, il n a pas l'air de s arretter dessus et execute la suite du code apparemment ! Comme j'ai fiat un menu, le resultat est qu'il reaffiche le menu avant meme que j'ai pu saisir quoique ce soit.

    Merci pour vos r�ponses et bonne soir�e.

  2. #2
    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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par d�faut
    Bonjour,

    c'est surement qu'il reste des caract�res dans le buffer de stdin. Essaie : Comment vider le buffer clavier ?

  3. #3
    Membre confirm�
    Inscrit en
    D�cembre 2005
    Messages
    105
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2005
    Messages : 105
    Par d�faut
    Exactement ca ! je savais pas qu' on devait le prendre en compte, merci beaucoup et bonne soir�e !

  4. #4
    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 ceres02
    Je n'ai pas d'erreur de compilation, tout marche bien mais lorsqu'il passe sur le fgets, il n a pas l'air de s arretter dessus et execute la suite du code apparemment ! Comme j'ai fiat un menu, le resultat est qu'il reaffiche le menu avant meme que j'ai pu saisir quoique ce soit.
    Je suppose que dans le menu, il y a un scanf() ou un getchar() (ou fgetc()) qui a laiss� les toilettes crades en sortant. C'est � lui de nettoyer...

    La fonction fgets() n'est pas en cause. elle fait son travail...

    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers

  5. #5
    Membre Expert
    Inscrit en
    D�cembre 2004
    Messages
    1 478
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 478
    Par d�faut
    Citation Envoy� par Emmanuel Delahaye
    il y a un scanf() ou un getchar() (ou fgetc()) qui a laiss� les toilettes crades en sortant. C'est � lui de nettoyer...
    Je ne sais pas pourquoi, mais je ne suis pas convaincu par la comparaison entre le tampon de stdin et des toilettes... Des toilettes seraient plutot un stdout, non ?

  6. #6
    Membre confirm�
    Inscrit en
    D�cembre 2005
    Messages
    105
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2005
    Messages : 105
    Par d�faut
    En tout cas, ca marche parfaitement, en revanche fgets rajouter un '\0' � la fin du char que je recupp�re, n'est ce pas? Je voudrais pouvoir m'en debarasser ou alors pouvoir l'ajouter a ceux qui n'en ont pas, j'ai regard� du cote de strcat mais je n'y arrive pas...

  7. #7
    Membre Expert
    Inscrit en
    D�cembre 2004
    Messages
    1 478
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2004
    Messages : 1 478
    Par d�faut
    Citation Envoy� par ceres02
    En tout cas, ca marche parfaitement, en revanche fgets rajouter un '\0'
    Si le tableau de char est assez long, fgets() prend egalement en compte le retour-chariot ('\n') compris dans le fichier. Ton tableau se terminera donc par '\0''\n'. En regle generale, on remplace le '\n' par un '\0' en utilisant strchr(). Je ne vois pas l'interet de se debarasser du '\0', sauf si on travaille avec des chaines speciales, definies par exemple par une structure:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    typedef struct
    {
       char *characters;
       size_t length;
    } string;

  8. #8
    Membre confirm�
    Inscrit en
    D�cembre 2005
    Messages
    105
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2005
    Messages : 105
    Par d�faut
    en fait, je fais une pseudo bibliotheque ou je peux ajouter des fichiers soit par saisie (avec les fgets) soit en utilisant un fichier qui est lue, mais d�s lors un titre comme "toto" saisie en fgets n'aura pas le meme nombre de caracteres et quand je fais une recherche du titre, il ne le trouve pas avec un strcmp.
    Donc je pensais a rajouter un \0 ou a m en debarasser mais je n y arrive pas !
    quand je fais un strlen, il m affiche 16 pour celui releve avec le fgets et 15 pour celui dans le fichier.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Probleme avec fgets()
    Par Piscium dans le forum C
    R�ponses: 4
    Dernier message: 13/07/2010, 09h38
  2. Probleme avec fgets
    Par SAKDOSS dans le forum Biblioth�que standard
    R�ponses: 5
    Dernier message: 30/12/2007, 15h58
  3. probleme avec fgets et un tableau � 2 dimensions
    Par l1086 dans le forum Biblioth�que standard
    R�ponses: 16
    Dernier message: 14/12/2007, 19h43
  4. probleme avec fgets
    Par loan33 dans le forum Langage
    R�ponses: 2
    Dernier message: 01/12/2006, 18h24
  5. probleme avec fgets
    Par semaj_james dans le forum C
    R�ponses: 3
    Dernier message: 09/12/2005, 21h00

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