Problème de lecture de caractère en C

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. 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
    1. 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
      1. 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