/*! \file q6.c

 *  \author EISTI
 *  \version 0.1
 *
 *  \brief normalise un tableau
 *
 */

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


/*! \fn int* concat(char ch1[], char ch2[])
 *  \author EISTI
 *  \version 0.1
 *  \date Fri Jan 15 16:01:05 2010
 *
 *  \brief Récupère la valeur maximum d'un tableau
 *
 *  \param ch1 1ere chaine
 *  \param ch2 2eme chaine
 *
 *  \return pointeur vers la concatenation des 2 chaines
 */

char* concat(char ch1[], char ch2[]) {

  int i, j;
	char *tRes;

	tRes=malloc((strlen(ch1)+strlen(ch2))*sizeof(char)); //allocation de la memoire

	if(tRes==NULL){// si l'allocation plante
		// erreur d'allocation, on quitte le programme
		perror("Erreur d'allocation mémoire");
		exit(-1);
	}

	//copie du 1er tableau dans le tableau résultat
	i=0;
	while(ch1[i]!='\0'){
		tRes[i] = ch1[i];
		i++;
	}
	//copie du 2e tableau dans le tableau résultat
	j=0;
	while(ch2[j]!='\0'){
		tRes[i+j] = ch2[j];
		j++;
	}
	tRes[i+j]='\0';//on marque la fin de chaine
	//on retourne la taille du tableau cree pour l'afficher
	return(tRes);
}


/*! \fn int main (int argc, char** argv)
 *  \author EISTI
 *  \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 c1[20],c2[20], *cRes;

  //saisie de la 1ere chaine
	printf("\nSaisissez la 1ere chaîne : ");
	scanf("%s",c1);

  //saisie de la 2eme chaine
	printf("\nSaisissez la 2eme chaîne : ");
	scanf("%s",c2);

  //concatenation
  cRes = concat(c1,c2);
  printf("\nRésultat : %s\n ",cRes);

	//quitte la fonction
	return (EXIT_SUCCESS);
}
