Introduire des phrases en C

Résolu
Limbergh -  
limbergh Messages postés 658 Date d'inscription   Statut Membre Dernière intervention   -
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

12 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 569
 
é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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 569
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 569
 
Salut,

scanf(" %s", &mot);

écrit
scanf("%s", mot);
1
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 569
 
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

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

Posez votre question
tatou_38 Messages postés 1937 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
limbergh Messages postés 658 Date d'inscription   Statut Membre Dernière intervention   140
 
ok,
mais quand j'introduis une phrase, il ne m'affiche que le dernier mot
et je ne vois pas pourquoi???
0
limbergh Messages postés 658 Date d'inscription   Statut Membre Dernière intervention   140
 
Je viens de le faire et ça ne change rien. J'ai toujours le dernier mot
qui s'affiche
0
limbergh Messages postés 658 Date d'inscription   Statut Membre Dernière intervention   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
limbergh Messages postés 658 Date d'inscription   Statut Membre Dernière intervention   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
limbergh Messages postés 658 Date d'inscription   Statut Membre Dernière intervention   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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 569
 
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
limbergh Messages postés 658 Date d'inscription   Statut Membre Dernière intervention   140
 
merci pour tout
0