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

// longueur maximale de la chaine saisie
#define LMAX 10

/* Déclaration de la fonction inverse_chaine() :
Fonction qui inverse les caractères de la chaine de caractères str passée en paramètre*/
void inverse_chaine(char *str);


int main()
{
	char tab [LMAX + 1];// LMAX caractères + le caractère '\0'
	size_t lo;
	
	printf("Saisir une chaine (longueur max %d) : ", LMAX);
	
	// la saisie de la chaîne de caractères est sécurisée : pas de risque de débordement de tableau
	fgets(tab, LMAX+1, stdin);
	lo = strlen(tab);
	
	// pour supprimer le caractère '\n' ajouté par fgets() quand l'utilisateur saisit un nombre de caractères strictement inférieur à LMAX
	if (tab[lo -1] == '\n')
	{
		tab[lo -1] = '\0';
	}
	printf("Chaine initiale :\n%s\n",tab);
	inverse_chaine(tab);
	printf("\nChaine inversee :\n%s\n",tab);
	
	return 0;
}




// le type du paramètre (char *) autorise la fonction à modifier les caractères de la chaîne reçue en paramètre
// c'est ici nécessaire 
void inverse_chaine(char *str)
{
	size_t l = strlen(str);
	char temp;
	for (size_t i = 0; i < l/2; ++i)
	{
		temp = str[i];
		*(str+i) = str[l-1-i];
		str[l-1-i] = temp;
	}
}