Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide tableau de type personne

    11 octobre 2019 à 17:14:03

    Bonjour a tous

    #include <stdio.h>
    #include <stdlib.h>
    #include "structures.h"
    
    
    
    int main(int argc, char *argv[])
    {
    
        struct Information utilisateur ;
    
    
    
       
           printf("Veuillez renseigner votre nom: ");
           scanf("%s", utilisateur.nom);
    
           printf("Veuillez renseigner votre prenom: ");
           scanf("%s", utilisateur.prenom);
    
           printf("Veuillez renseigner votre adresse: ");
           scanf("%s", utilisateur.adresse);
    
           printf("Veuillez renseigner votre age: ");
           scanf("%d", &utilisateur.age);
    
    
    
           printf("%s %s ", utilisateur.nom , utilisateur.prenom);
           printf("%s",utilisateur.adresse);
           printf("Age %d ans", utilisateur.age);
    
    
        return 0;
    }

     ////struct Information
    {
        char nom[100];
        char prenom[100];
        char adresse[1000];
        int age;
    };

    Mon probleme est , que si je rentre un espace (dans l'adresse par exemple) ,il m'affiche le printf a suivre mais saute le scanf (pour age).

    Et dans le printf final , age prend la valeur 2.

    J'suis perdu...Merci pour votre aide

    -
    Edité par Pierre-HenriMoreau 11 octobre 2019 à 17:14:55

    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2019 à 17:42:24

      C'est un problème récurent, la cause est que scanf arrête la saisie dés qu'il trouve un espace lors de la saisie de chaîne de caractère.

      Une solution est d'utiliser fgets qui prend la saisie jusqu'au retour de chariot (Touche Entrée). 

      scanf est une fonction assez complexe, (il faut bien faire des saisies quand on débute), mais on peut l'utiliser aussi  ex :

          scanf(" %[^\n]", utilisateur.nom);



      • Partager sur Facebook
      • Partager sur Twitter

      Aide tableau de type personne

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown