#include <stdio.h>
#include <string.h> // contient la déclaration de la fonction strcat()

// longueur maximale d'un mot
#define LMAX 10

/*Déclaration de la fonction vider_buffer()
Cette fonction permet de vider le buffer (ou tampon) associé à l'entrée standard (par défaut le clavier)

Attention : cet appel est bloquant quand le buffer est déjà vide (avant l'appel)
*/
void vider_buffer(void);

int main()
{
	char mot1[2*LMAX + 1]; 
	char mot2[LMAX + 1];
	char ch[6];

	printf("--> Entrez un premier mot(longueur max %d) : ", LMAX);
	
	sprintf(ch, "%%%ds", LMAX); // sprintf() écrit dans le tableau ch au lieu d'écrire sur la sortie standard
								// place la chaine "%10s" dans le tableau ch (quand LMAX est égal à 10)
	scanf(ch, mot1); //saisie sécurisée (pas de risque de débordement de tableau)
	
	vider_buffer();	//Appel de la fonction vider_buffer()

	printf("--> Entrez un second mot(longueur max %d)  : ", LMAX);
	
	//saisie sécurisée (pas de risque de débordement de tableau). 
	// Plus simple mais moins "joli" car la saisie n'est plus sécurisée si on diminue LMAX
	scanf("%10s", mot2); 
	
	printf("\nDebug, mot1 : %s\n",mot1);
	printf("Debug, mot2 : %s\n",mot2);
	
	strcat(mot1, mot2);
	printf("\nApres concatenation mot1 = %s\n",mot1);


	return 0;
}

void vider_buffer(void) //Définition de la fonction 
{
    char c;
    do
    {
        c=getchar(); // attention, quand le buffer est vide, 
        // cet appel est bloquant !  Le programme attend alors
        // la saisie d’un ou plusieurs caractères suivi de 
        // l’appui sur la touche Entrée
    }
    while(c != '\n');
}

