/* -------------------------------------------------- */
/* Jouons avec les caractres en C par LG le 4/10/2004*/
/*------------------- Version "scanf" ----------------*/
/* -------------------------------------------------- */

#include<stdio.h>

void essai1(void)
{
  char rep = 'o';
  int cpt=1;

  while (rep=='o')
    {
      printf("   Numro de Boucle : %d\n",cpt);
      printf("   Voulez-vous continuer ? (o/n)\n");
      scanf("%c",&rep);
      cpt = cpt+1;
    }
  printf("Fin de la boucle\n\n");
}


/*marche si o puis entree, n puis entree*/
void solu1(void)
{
  char rep = 'o';
  char viderbuffer;
  int cpt=1;

  /*c'est o pour oui, et nimp d'autre pour non*/
  while (rep=='o')
    {
      printf("   Numro de Boucle : %d\n",cpt);
      printf("   Voulez-vous continuer ? (o/n)\n");
      scanf("%c",&rep);
      scanf("%c",&viderbuffer);
      cpt = cpt+1;
    }
  printf("Fin de la boucle\n\n");
}

int main(void)
{
  printf("Essai numro1\n");
  essai1();

  /*   conclusion, un scanf avec %c est  manier avec prcaution, */
  /*     le %d mange les blancs, pas le %c. */
  
  solu1();

  /*si on met oooooo, plein de boucles */
  /*le scanf "garde en memeoire " les trucs deja scannes*/

  return 0;
}

/* -------------------------------------------------- */
/*solution au probleme du scanf, version1*/
/*LG le 8/10/2004*/
/* -------------------------------------------------- */

#include<stdio.h>

void vider_ligne (void)
{
  char buf;
  do
    {
      scanf("%c", &buf);
    }
  while (buf != '\n');
}


char prend_premier_non_vide_et_vide_ligne(void)
{
  char rep;
  do
    {
      scanf("%c",&rep);
    }
  while((rep == ' ') || (rep == '\n'));
  vider_ligne();
  return(rep);
}

char get_reponse(void)
{
  char rep;
  do
    {
      rep = prend_premier_non_vide_et_vide_ligne();
    }
  while (rep != 'o' &&  rep != 'n');

  return rep;
}


int main(void)
{
  int cpt=1;
  char rep;
  
  do
    {
      printf("   Numero de Boucle : %d\n",cpt);
      printf("   Voulez-vous continuer ? (o/n)\n");

      rep = get_reponse();
      cpt = cpt+1;
    }
  while (rep  == 'o');

  printf("Fin de la boucle\n\n");
  return 0;
}

/* -------------------------------------------------- */
/*solution 2 au probleme des caracteres*/
/*LG le 8/10/2004*/
/* -------------------------------------------------- */

#include<stdio.h>

char prend_premier(void)
{
  char rep[512]; 
  scanf("%s",&rep);
  return(rep[0]);
}


char get_reponse(void)
{
  char rep;
  do
    {
      rep = prend_premier();
    }
  while (rep != 'o' &&  rep != 'n');

  return rep;
}


int main(void)
{
  int cpt=1;
  char rep;
  
  do
    {
      printf("   Numero de Boucle : %d\n",cpt);
      printf("   Voulez-vous continuer ? (o/n)\n");

      rep = get_reponse();
      cpt = cpt+1;
    }
  while (rep  == 'o');

  printf("Fin de la boucle\n\n");
  return 0;
} 
