Problème de lecture de caractère en C

Yakurena -  
 Jolkdarr -
Rebonjour,
j'ai encore un problème :
si je fais une première lecture de variable(une chaine de caractères) et que je veux lire ensuite un caractère,le programme continue à s'éxécuter après la première lecture sans me laisser entrer le caractère au clavier.
Cad ,avec le programme suivant:
printf("entrez une chaine : ");
scanf("%s",chaine);
printf("entrez un caractère : ");
scanf("%c",&caractere);
printf("fin du programme");

En execution,cela donne:
entrez une chaine : toto (tapé au clavier)
entrez un caractère : fin du programme

Quel est le problème et comment le résoudre?
Merci d'avance.

3 réponses

  1. Jolkdarr
     
    Hello !

    Si tu veux comprendre ce qui se passe, compare avec le programme ci-dessous :
    #include <stdio.h>
    
    int main()
    {
    	char Chaine[50];
    	char Caractere;
    	
    	printf("entrez une chaine : ");
    	scanf("%s",Chaine);
    	printf("entrez un caractère : ");
    	scanf("\n%c",&Caractere);
    	printf("fin du programme %c", Caractere); 
    }
    

    ou
           scanf(" %c",&Caractere);
    

    Take care !
    2
  2. fred
     
    salut,
    ca me rappelle mes debut en C
    tiens , tu fais en avant d'excuter ton bout de code de lecture de chaines un
    flush();
    ou
    flushall();<

    cela te permet de liberer le tampon
    je pense que ca devra aller.
    Courage a toi
    @+
    0
  3. mouste2
     
    Salut,

    essaye ca:
    char c;
    char str[50];
    
    fflush(stdout);
    printf("entrez une chaine puis valider par <entrée> : "); 
    c=getchar(); 
    fflush(stdout);
    printf("entrez un caractère : "); 
    gets(str); 
    printf("fin du programme"); 
    
    

    Pour afficher les résultat sur la sortie standard:
    c=getchar(); ------> putchar(c)
    gets(str);------> puts(str)
    0