/*! \file q8.c

 *  \author EISTI
 *  \version 0.1
 *
 *  \brief Demande la saisie de 2 chaine et affiche si l'une est contenue dans l'autre
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/*! \fn int estContenue(char ch1[], char ch2[])
 *  \author Peio Loubiere <peio.loubiere@eisti.fr> 
 *  \version 0.1
 *  \date Mon Jan 18 17:41:14 2010
 *
 *  \brief Vérifie si une chaine est contenue dans une autre
 *
 *  \param ch1[] chaine contenante
 *  \param ch2[] chaine contenue
 *
 *  \return 1 si ch2 est contenue dans ch1
 */

int estContenue(char ch1[], char ch2[]) {
	int i,j,l1,l2;

	//longueur des chaînes
	l1 = strlen(ch1);
	l2 = strlen(ch2);

	// pour chacune des lettres de ch1
	for (i = 0; i < l1-l2; i++)	{
		j=0;
		// des que l'on trouve une egalisté, on avance dans ch2
		while((ch1[i+j] == ch2[j]) && (j<l2)){
			j++;
		}
		// si l'on a parcouru ch2, on retourne vrai
		if (j==l2){
			return 1;
		}
	}
	// si l'on a parcouru tout ch1 mais pas tout ch2, la chaîne 2 n'est pas incluse dans la chaine 1
	return 0;
	
}


/*! \fn int estContenueStr(char ch1[], char ch2[])
 *  \author Peio Loubiere <peio.loubiere@eisti.fr> 
 *  \version 0.1
 *  \date Mon Jan 18 17:41:14 2010
 *
 *  \brief Vérifie si une chaine est contenue dans une autre
 *
 *  \param ch1[] chaine contenante
 *  \param ch2[] chaine contenue
 *
 *  \return 1 si ch2 est contenue dans ch1
 */

char* estContenueStr(char ch1[], char ch2[]) {
	
	return strstr(ch1,ch2);
}

/*! \fn int main (int argc, char** argv)
 *  \author Peio Loubiere <peio.loubiere@eisti.fr>
 *  \version 0.1
 *  \date Fri Jan 15 15:29:37 2010
 *
 *  \brief Fonction principale
 *
 *
 * \param argc : Nombre d'argument
 * \param argv : Tableau des arguments
 * \return 0 : le programme doit se terminer normalement
 *
 * \remarks 
 */
int main(int argc, char** argv){
  char mot[20],ssMot[20];
	int retour;

  printf("\nSaisir la chaîne principale : ");
  scanf("%s",mot);
  printf("\nSaisir la sous-chaîne : ");
  scanf("%s",ssMot);
  printf("%s %s incluse dans %s\n",ssMot,((estContenueStr(mot,ssMot)!=NULL)?"est":"n'est pas"),mot);
  //printf("%s %s incluse dans %s\n",ssMot,((estContenue(mot,ssMot)==1)?"est":"n'est pas"),mot);

	return (EXIT_SUCCESS);
}
