Langage C / fgets
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Langage C / fgets



  1. #1
    invitee5fedd72

    Langage C / fgets


    ------

    bonjour,
    Voici une partie de mon programme qui me pose un problème:


    ****************************** ****************
    printf("Donner le nom :\n");
    scanf("%s", &adher.nom);

    printf("Donner le prénom :\n");
    scanf("%s", &adher.prenom);

    printf("Donner l'adresse, numero et nom de la rue\n");
    fgets(adher.adresse.nom_rue, 30, stdin);

    printf("Donner ville\n");
    scanf("%s", &adher.adresse.ville);

    ****************************** ****************

    (c'est juste une partie d'une fonction dont tout les variables sont définies)

    Quand j'execute ce programme, je rencontre un problème au niveau de la fonction fgets. En fait il affiche Donner l'adresse, numero et nom de la rue et Donner ville sans que je tape l'adresse.
    Est ce que qq peut me dire où se situ le problème

    Merci d'avance

    Lui

    -----

  2. #2
    invite2d8d5438

    Re : Langage C / fgets

    Salut,

    Je pense qu'un petit rewind(stdin) devrait résoudre ton problème:

    Code:
    printf("Donner l'adresse, numero et nom de la rue\n");
    rewind(stdin);
    fgets(adher.adresse.nom_rue, 30, stdin);

  3. #3
    invitee5fedd72

    Re : Langage C / fgets

    Cela ne regle pas mon problème.
    Est ce que le problème ne vient pas de faite que j'ai utilisé des scanf avant.

    Lui

  4. #4
    invite2d8d5438

    Re : Langage C / fgets

    Eh ben là je suis bien surpris, sur Windows (et même Solaris) le rewind(stdin) fonctionne bien mais sous Linux pas moyen. J'imagine que tu travailles sous Linux non ?
    A part ça, tu as raison le problème vient du fait que tu utilises scanf avant, et le scanf laisse un '\n' dans le stdin du coup le fgets suivant lit une chaine vide. Donc pour y remédier, tu peux appeler fgetc(stdin) avant le fgets.

    Code:
    printf("Donner l'adresse, numero et nom de la rue\n");
    fgetc(stdin);
    fgets(adher.adresse.nom_rue, 30, stdin);

  5. A voir en vidéo sur Futura
  6. #5
    invite7a8ce750

    Re : Langage C / fgets

    Citation Envoyé par lui Voir le message
    bonjour,
    Voici une partie de mon programme qui me pose un problème:


    ****************************** ****************
    printf("Donner le nom :\n");
    scanf("%s", &adher.nom);

    printf("Donner le prénom :\n");
    scanf("%s", &adher.prenom);

    printf("Donner l'adresse, numero et nom de la rue\n");
    fgets(adher.adresse.nom_rue, 30, stdin);

    printf("Donner ville\n");
    scanf("%s", &adher.adresse.ville);

    ****************************** ****************
    [...]

    Lui
    T'apprendras jamais à utiliser la balise code ??
    Dommage

  7. #6
    invitee5fedd72

    Re : Langage C / fgets

    Oui, je travaille sous Linux
    En utilisant fgetc(stdin), j'ai résoulu le problème, juste que la fonction fgets prend "\n". Cela a été suprimé avec une fonction déja réalisée.

    Merci beaucoup

Discussions similaires

  1. Du langage
    Par invitec15fc0a6 dans le forum Psychologies (archives)
    Réponses: 7
    Dernier message: 18/12/2007, 15h48
  2. Langage C
    Par invite8c0f8078 dans le forum Logiciel - Software - Open Source
    Réponses: 23
    Dernier message: 05/04/2007, 01h57
  3. Langage C
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 26/02/2007, 06h22
  4. Langage C
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 14/02/2007, 20h47
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...