#include <stdio.h>

// Solution lourde : horrible et non sûre, mais c'est une exemple.  Ce tampon
// est utilisé dans la fonction input.
char tampon [10];

// Cette fonction est *mal* écrite, bien sûr!
// Ne l'utilisez jamais hors de ces exemples de
// code non sûr.
char *
input (void)
{
  int nombre_de_caracteres = 0;

  char c;
 boucle:
  c = getchar ();
  if (c != EOF && c != '\n') // «&&» en C est comme «and» en Python
    {
      tampon [nombre_de_caracteres] = c;
      nombre_de_caracteres = nombre_de_caracteres + 1;
      goto boucle;
    }
  // Ici, après la boucle, je doit écrire le terminateur.  J'utilise 0, comme C.
  tampon [nombre_de_caracteres] = 0;

  return tampon;  // Le résultat est le début du tampon: ici j'utilise le
                  // tableau comme pointeur.
}

void
print (char *chaine)
{
  char *p = chaine;
  while (* p != 0) // tant que je ne suis pas encore arrivé à la fin...
    {
      char c = * p;
      putchar (c);
      p = p + 1;
    }
}

int
main (void)
{
  // print ("bonjour"); // Après le caractère 'r' on a automatiquement, en C, un
                        // caractère de valeur 0 qui marque la fin de la chaine.

  print ("Veuillez écrire votre prénom> ");
  char *s = input ();
  print ("Bonjour ");
  print (s);
  print (".\n");

  return 0; // Sort avec succès.
}
