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 :

Scanf et les chaines de caractère


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 55
    Par défaut Scanf et les chaines de caractère
    Salut à tous voila, je commence et mes cours sont, comment dire, vide
    j'aimerai que l'utilisateur tape un mot puis affiche se mot, mais meme ca, sa marche pas voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      char *mot;
      printf("Metter votre mot\n");
      scanf("%s",&mot);
      printf("%s", mot);
    je suis sous devcpp, merci de m'aider

  2. #2
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    mot est un pointeur, il contient juste une adresse. Tu n'as réservé aucun espace pour la chaîne et en plus mot n'est pas initialisé, il n'y a aucune raison que ça fonctionne. En plus de ça scanf() est overkill et mal utilisée dans 99% des cas, il vaut mieux bricoler ses propres fonctions de saisis en partant de fgets() (ou getchar()). Voilà un exemple qui a l'air de fonctionner :
    Code C89 : 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
    32
    33
    34
    35
    36
    #include <stdio.h>
    #include <string.h>
     
    #define  N  8
     
    int main (void)
    {
       char chaine[N];
       char *p;
     
       /* lecture de la chaîne */
       fgets(chaine, sizeof chaine, stdin);
       p = strchr(chaine, '\n');
     
       /* si le '\n' est trouvé dans la chaîne il suffit de le masquer */
       if (p != NULL)
       {
          *p = '\0';
       }
       /* sinon ça veut dire que fgets() n'a pas lu tout ce que l'utilisateur a
          entré et il faut aller chercher le reste soi-même */
       else
       {
          int c;
     
          do
          {
             c = getchar();
          }
          while (c != '\n' && c != EOF);
       }
     
       puts(chaine);
     
       return 0;
    }

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 55
    Par défaut
    merci beaucoup, je vais pouvoir continuer merci

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

Discussions similaires

  1. question sur les chaine de caractères
    Par amy0o0 dans le forum C
    Réponses: 11
    Dernier message: 14/10/2006, 14h14
  2. [CR 10] Traitement sur les chaines de caractères
    Par sylviefrfr dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 11/09/2006, 09h16
  3. question sur les chaines de caractères
    Par pierrOPSG dans le forum C
    Réponses: 5
    Dernier message: 13/04/2006, 18h55
  4. les chaines de caractères
    Par mrtatou dans le forum C
    Réponses: 4
    Dernier message: 25/01/2006, 14h18
  5. xsl : test sur les chaine de caractère
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/07/2005, 15h43

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