/*
 * Cours Langage C - AIR1
 * C. Recanati 26/08/2019
 * TP3 exo4
*/

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

#define TAILLE 500
void 	recopie(char *mot, char *deb, int n);

int main () {
	char phrase[TAILLE] = "";
	char mot[28];
	int compteur=0; /* pour compter le nombre de mots dans la phrase */
		
	char *p= phrase; /* p permettra de parcourir la phrase jusqu'au caractere nul */	
	char *q=phrase; /* q permettra de parcourir un mot de la phrase */
					/* ou d'avancer sur la phrase pour ignorer les caractres blancs */
	char *deb;		/* sauvera le debut d'un mot */
	
	printf("Entrez une phrase:\n");
	fgets(phrase, sizeof(phrase), stdin);

	for (p= phrase; *p != '\n' ; p++)
		; 
	*p = '\0';
	
	p=phrase;

	for (p= phrase; *p != '\0' ; p++) {	
		/* on "mange" les blancs (s'il y en a au debut) */		
		for (q = p; *q == ' '; q++) 
			; 		
		
		deb = q; /* le debut du mot eventuel qui suit */
		while ((*q != ' ') && (*q != '\0') )
			q++; 	/* on avance q jusqu'a trouver un blanc (ou la fin) */
		
		if (q-deb >0) {
			/* alors on vient de franchir un mot d'au moins 1 caractere */
			compteur++;
			p = q -1; /* on met p sur le dernier caractere du mot */			
			/* au prochain tour de boucle for, p sera incremente */
			/* et pointera finalement sur le meme char que q */
			
			recopie(mot, deb, q-deb);
			printf("le mot %s a %lu caracteres\n", mot, strlen(mot));
		};
	}
	/* ici, on est arrive au bout de la chane car *p == '\0' */
	/* et on a compte tous les mots avec compteur */
	printf("On a lu %d mots dans la phrase \"%s\" \n", compteur, phrase);
	return EXIT_SUCCESS;
}

void 	recopie(char *mot, char *deb, int n) {
		char *p = deb;
		
		for (int i=0; i< n; i++, p++)
			mot[i] = *p;
		/* on a recopier le mot dans mot */
		/* pour les n caracteres */
		mot[n]= '\0';
}





