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 :

fgets oublie le premier caractère


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut fgets oublie le premier caractère
    Bonjour,
    J'ai créé un programme en C qui doit utiliser les switchs, donc dans ce cas, pour écrire une valeur dans une variable, il faut utiliser fgets (à part si vous avez une meilleur solution pour que je puisse récupérer au moins deux chaines de caractères avec des espaces )

    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
    #include<string.h>
    #include <stdio.h>
    #include<stdlib.h>
     
    int reponse;
    char msg[199];
    char titre[50];	
     
    main( )
    {    
         printf("Tapez 1 pour ecrire un titre et un message\n");
         scanf("%d", &reponse);
         switch(reponse)
         {
         case 1:
    	printf("Tapez le titre de votre message :\n");    
        fgetc(stdin);
    	fgets(titre,sizeof(titre),stdin);
    	printf("Tapez le corps de votre message :\n\n");
    	fgetc(stdin);
    	fgets(msg,sizeof(msg),stdin);
    	printf("Le titre du message est : %s\nLe corps du message est : %s", titre, msg);
    	break;
        }
    	   system("PAUSE");
    }
    Le programme marche sauf que quand j'entre le corps du messsage (char msg[199]), ça prend tout sauf le premier caractère => onjour, ça va ?
    Pour le titre du message, il n'y a aucun soucis.

    Où est le problème ?
    Je voulais mettre fflush(stdin), mais je ne sais pas où le mettre. D'ailleurs, je ne pense pas que ce soit la bonne solution

    Merci d'avance pour votre aide

  2. #2
    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 : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par benjiprod Voir le message
    Le programme marche sauf que quand j'entre le corps du messsage (char msg[199]), ça prend tout sauf le premier caractère => onjour, ça va ?
    Forcément, tu lis le premier caractère par ailleurs avec la fonction fgetc(stdin);

    Citation Envoyé par benjiprod Voir le message
    Je voulais mettre fflush(stdin), mais je ne sais pas où le mettre. D'ailleurs, je ne pense pas que ce soit la bonne solution
    Non, ce n'est pas la bonne solution. En effet, fflush() n'est normalisé que sur les flux sortant, le comportement de fflush(stdin) n'est donc pas défini.

    La solution consiste à supprimer les appels à fgetc() avant les lectures et à purger le tampon de saisie après les lectures si nécessaire.
    Sujet maintes fois abordé sur le forum, tu devrais retrouver les discussions en faisant une recherche sur les mots-clés fpurge ou fclean.

Discussions similaires

  1. TJvFileListBox, oublie du premier caractère du premier item
    Par PoOky dans le forum Composants VCL
    Réponses: 10
    Dernier message: 03/11/2005, 17h27
  2. [D7] Obtenir le premier caractère d'un TField
    Par plante20100 dans le forum Langage
    Réponses: 6
    Dernier message: 18/10/2005, 14h05
  3. Supprimer le premier caractère d'une chaine de caractères
    Par Droïde Système7 dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2005, 11h13
  4. Selection des x premiers caractères dans un champ précis
    Par Schulman dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2005, 09h23
  5. Réponses: 2
    Dernier message: 04/09/2004, 10h53

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