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 :

question à propos de scanf


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Par défaut question à propos de scanf
    Je veux recuperer une chaine de caractere pouvant contenir des espaces:
    Je fais donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char nom_var[1000];
    scanf("%s",nom_var);
    Seulement lorsque je fais cela je ne recupere que la première partie de la chaine(avant le premier espace)
    Comment puis faire pour recuperer en une fois une chaine de caractere contenant un nombre indefini d'espace(0 à N)?

    D'avance merci pour vos réponses.

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Il faut lire la FAQ parcourir le forum avant de poster une question. Celà a déjà été évoqué de nombresuses fois sur ce foum.
    Ensuite tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgets(buf, sizeof(buf), stdin);
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Par défaut
    J'ai deja essayer cette solution, mais ca ne fonctionne pas, le programme n'attend pas que l'utilisateur entre quelque chose au clavier.

  4. #4
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,
    Citation Envoyé par jbaudens
    J'ai deja essayer cette solution, mais ca ne fonctionne pas, le programme n'attend pas que l'utilisateur entre quelque chose au clavier.
    Ce n'est pas normal, montre nous plus de code il y a peut être un oubli ou une erreur.

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Par défaut
    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
    27
    28
    29
    30
    31
     
    void recherche_motcle(motcle *tmotcle[],int nbmotcle){
      char tmp[1000],save[1000];
      char m1[255];
      char m2[255];
      char mode[3];
      printf("Entrer les mots cles recherches (motcle | motcle1 et motcle2 | motcle1 ou motcle2\n\n");
      //scanf("%s",tmp);
      fgets(tmp, sizeof(tmp),stdin);
      strcpy(save,tmp);
      strcpy(m1,strtok(tmp," "));
      if(strcmp(m1,save) == 0){
        printf("\nRecherche Simple\n\n");
        recherche_motcle2(tmotcle,nbmotcle,m1,NULL,' ');
      }
      else{
        strcpy(mode,strtok(NULL," "));
        strcpy(m2,strtok(NULL," "));
        printf("\nRecherche Composee\n\n");
        if(strcmp(mode,"et") == 0){
            recherche_motcle2(tmotcle,nbmotcle,m1,m2,' ');
        }
        else
          if(strcmp(mode,"ou") == 0){
    	recherche_motcle2(tmotcle,nbmotcle,m1,m2,'u');
          }
          else{
    	printf("Operation non conforme\n");
          }
      }
    }

  6. #6
    Membre Expert

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Par défaut
    Salut

    Citation Envoyé par jbaudens
    J'ai deja essayer cette solution, mais ca ne fonctionne pas, le programme n'attend pas que l'utilisateur entre quelque chose au clavier.
    99.999999% de chances que ce soit parceque tu as (mal) utilisé scanf dans ton programme avant...

  7. #7
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Par défaut
    comment ca mal utilisé scanf?? Quelle erreur ai je pu faire??

  8. #8
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Citation Envoyé par jbaudens
    comment ca mal utilisé scanf?? Quelle erreur ai je pu faire??
    Il y a de très fortes chances que tu n'aies pas vidé stdin avec un scanf utilisé *avant* l'appel de ta fonction....
    Donc reste cohérent, et n'utilise qu'une fonction de saisie tout au long de ton code : parceque les appels de scanf foireux, forcément, ça casse toute la suite des saisies...
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  9. #9
    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

  10. #10
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 17
    Par défaut
    Normal, il faut passer l'adresse de ta chaîne

    char nom_var[1000];
    strcpy(nom_var, "");
    scanf("%s", &nom_var);

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    NON, nom_var étant un tableau de caractères, c'est l'adresse du premier caractère.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 17
    Par défaut
    Oui, tu as raison, autant pour moi
    Ca vient d'autre chose qui est fait autre part dans le code.

  13. #13
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Par défaut
    j ai trouvé en faisant ca ca fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int c;
    while ( ((c = getchar()) != '\n') && c != EOF)
    {
    };
     
    scanf("%999[^\n]", tmp);
    Merci beaucoup à ceux qui m'ont aidé

  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    C'est bizarre c'est acharnement à utiliser scanf
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  15. #15
    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 Trap D
    C'est bizarre c'est acharnement à utiliser scanf

  16. #16
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu traines sur de droles de sites Emmanuel

  17. #17
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    En même temps si la demoiselle à besoin d'archarnement ...

Discussions similaires

  1. Une question toute bête à propos de scanf
    Par Flo Flo dans le forum Débuter
    Réponses: 12
    Dernier message: 29/04/2009, 10h13
  2. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  3. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  4. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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