Introduire des phrases en C

Résolu
Limbergh -  
limbergh Messages postés 669 Statut Membre -
Bonsoir,
j'ai fais un code en C pour écrire un mot et puis l'afficher.
Quelqu'un peut-il m'expliquer comment on introduis des phrases
complètes.
Voici mon code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int choix;
int main(int argc, char *argv[]) 
{
do
{

char mot[100];
printf("-1- introduisez un mot\n");
printf("-2- affichez le mot\n");
printf("-0- FIN\n");
scanf("%d", &choix);

switch(choix)
{
case 1:
     
     scanf(" %s", &mot);
     break;
case 2:
     
     printf("%s\n", mot);
     break;

}
}
while(choix!=0);


system("PAUSE");
    return 0;
}


Merci d'avance

Limbergh
Configuration: Windows XP
Firefox 2.0.0.12

12 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    écrit plutôt comme ça
    il faut éviter les variables globales
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int choix;
    int
    main (int argc, char *argv[])
    {
      char mot[100];
      int choix = 1;
      do {
          printf ("-1- introduisez un mot\n");
          printf ("-2- affichez le mot\n");
          printf ("-0- FIN\n");
          printf("Faites votre choix : ");
          scanf ("%d", &choix);
          getchar();
          switch (choix){
            case 1:
              printf("Saisissez le mot/phrase : ");
              fgets(mot,100,stdin);
              break;
            case 2:
              printf ("Vous avez saisi : %s\n", mot);
              break;
          }
      } while (choix != 0);
    
      system ("PAUSE");
      return 0;
    }
    
    3
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Utilise plutôt la fonction fgets(char *s,int size, FILE *stream)
    dans ton cas ça donne
    fgets(mot,100,stdin);
    et ne declare pas char mot[100] dans la boucle
    2
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    scanf(" %s", &mot);

    écrit
    scanf("%s", mot);
    1
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    je vois que tu n'as pas compris ça

    scanf("%s", &mot);
    mot c'est une chaîne de caractères donc un tableau de caractères en C
    mot c'est l'adresse de 1er élément
    danc ce cas on ne mets pas & devant

    pour scanf il faut savoir que l'espace c'est un séparateur
    donc même si tu as declaré char mot[100], scanf s'en fiche complétement, il ne va prendre qu'un seul mot

    pour prendre trois mot par exemple il faut utiliser
    scanf("%s %s %s",mot1,mot2,mot3);

    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tatou_38 Messages postés 1220 Date d'inscription   Statut Membre Dernière intervention   121
     
    Ton code saisit déjà des phrases jusqu'à 100 caractères. (Phrase = mots séparés par des espaces)
    0
  7. limbergh Messages postés 669 Statut Membre 140
     
    ok,
    mais quand j'introduis une phrase, il ne m'affiche que le dernier mot
    et je ne vois pas pourquoi???
    0
  8. limbergh Messages postés 669 Statut Membre 140
     
    Je viens de le faire et ça ne change rien. J'ai toujours le dernier mot
    qui s'affiche
    0
  9. limbergh Messages postés 669 Statut Membre 140
     
    Donc, je ne vois pas ce qu'il faut faire pour afficher une phrase à l'écran

    revoici mon code

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int choix;
    int main(int argc, char *argv[]) 
    {
    do
    {
    
    char mot[100];
    printf("-1- introduisez un mot\n");
    printf("-2- affichez le mot\n");
    printf("-0- FIN\n");
    scanf("%d", &choix);
    
    switch(choix)
    {
    case 1:
         
         scanf(" %s", &mot);
         break;
    case 2:
         
         printf("%s\n", mot);
         break;
    
    }
    }
    while(choix!=0);
    
    
    system("PAUSE");
        return 0;
    }
    


    merci d'avance
    0
  10. limbergh Messages postés 669 Statut Membre 140
     
    rebonsoir,
    j'ai mis ce que tu m'as dit mais maintenant il ne m'affiche plus le premier mot.
    Je te remet mon code, j'ai peut-être fait une erreur???

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    char mot[100];
    int choix;
    int main(int argc, char *argv[]) 
    {
    do
    {
    
    
    
    printf("-1- introduisez un mot\n");
    printf("-2- affichez le mot\n");
    printf("-3- introduisez des numeros de tableau\n");
    printf("-0- FIN\n");
    scanf("%d", &choix);
    getchar();
    
    switch(choix)
    {
    case 1:
         
         scanf("%s", mot);
         fgets(mot,100,stdin);
         break;
    case 2:
         
         printf("%s\n", mot);
         break;
    default :
            break;
    
    
    }
    }
    while(choix!=0);
    
    
    system("PAUSE");
        return 0;
    }
    


    Encore merci pour tout, c'est d'ailleurs pas la première fois...
    0
  11. limbergh Messages postés 669 Statut Membre 140
     
    merci pour ton aide...
    Tu sais juste encore m'expliquer ce que viens faire le getchar()...
    Après j'arrête de t'ennuyer!!!
    Bon sans blaguer, merci d'avance

    Limbergh
    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    getchar(); lit le caractère '\n' qui traine dans le buffer
    sinon tu ne pourras pas saisir le mot ou la phrase
    tu peux enlever getchar(); pour voir

    quand tu entre la valeur de choix qui est un entier tu appuies sur ENTREE pour continuer
    c'est à ce moment que le caractère '\n' traine
    0
  13. limbergh Messages postés 669 Statut Membre 140
     
    merci pour tout
    0