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 :

problème avec la fonction gets


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut problème avec la fonction gets
    Bonjour, j'ai un problème avec la fonction gets.
    Apaprement, elle ne marche pas si avant je fais un scanf, ce qui me parait très bizarre :
    Si je fais ce code là, pas de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    main()
    {
        int util1;
        char chaine[50];
        FILE *sortie;
        int a=1;
        if (a==1){          
            sortie=fopen("bonjour","w");
            fprintf(sortie,"BONJOUR\n");
            gets(chaine);
            fprintf(sortie," %s\n",chaine);
        }
    }
    Mais si je fais un scanf juste avant, ça ne marche pas : la chaine n'est pas demandée à l'utilisateur, alors que bonjour est écrit dans le fichier (ce qui prouve qu'on est bien rentré dans la boucle).

    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
    #include <stdio.h>
    main()
    {
        int util1;
        char chaine[50];
        FILE *sortie;
        int a;
        scanf("%d",&a);
        if (a==1){          
            sortie=fopen("bonjour","w");
            fprintf(sortie,"BONJOUR\n");
            gets(chaine);
            fprintf(sortie," %s\n",chaine);
        }
    }
    Est ce que vous pouvez m'aider? Merci!

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 168
    Par défaut
    Bonjour,

    pense à la balise

    sinon j'ai rien compris c'est quoi le problème , normalement tu as intialisé la variable a , où se situe le problème

    turbo_chess

  3. #3
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Il reste le '\n' qui n'a pas été ôté par scanf() dans le buffer d'entrée. gets() le trouve et considère que la chaîne est déjà entrée et est vide.

  4. #4
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Une solution consiste à écrire:

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut
    d'accord, merci beaucoup

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par défaut
    Mais je ne comprends pas la solution que vous avez donné, car alors, on ne rentre plus dans la boucle.
    Je ne comprends vraiment pas comment je peux faire

  7. #7
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par Laurran
    Mais je ne comprends pas la solution que vous avez donné, car alors, on ne rentre plus dans la boucle.
    Je ne comprends vraiment pas comment je peux faire
    De quelle boucle parlez-vous?

  8. #8
    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 Laurran
    Bonjour, j'ai un problème avec la fonction gets.
    Apaprement, elle ne marche pas si avant je fais un scanf, ce qui me parait très bizarre :
    gets() est un bug qu'il ne faut pas utiliser. scanf() est difficile à utiliser correctement (la preuve).

    Je conseille d'utiliser uniquement et correctement fgets().

    http://emmanuel-delahaye.developpez.com/inputs.htm

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

Discussions similaires

  1. problème avec la fonction get()
    Par Marciane dans le forum R
    Réponses: 3
    Dernier message: 17/05/2011, 13h35
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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