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

#include <stdio.h>
#include <stdlib.h>
#define TAILLE 500
int main () {
	char phrase[TAILLE] = "";
	char *p= phrase; /* p permettra de parcourir la phrase jusqu’au caractere nul */
	int compteur=0; /* pour compter le nombre de mots dans la phrase */
	
	char * q=phrase; /* q permettra de parcourir un mot */
					/* ou d’avancer sur la phrase pour depasser les caractres blancs */
	char *deb;		/* marquera le debut d'un mot */
	
	printf("Entrez une phrase:\n");
	fgets(phrase, sizeof(phrase), stdin);
	
	/* remplacer le dernier caractere lu (return) par le caractere de fin de chaine */
	for (p= phrase; *p != ’\n’ ; p++)
		; /* instruction vide (on ne fait rien qu’avancer p a chaque tour de boucle) */
	/* en sortie du for, on a *p == ’\n’ */
	/* on ecrase ce ’\n’, en le remplaant par ’\0’ : */
	*p = ’\0’;
	
	p=phrase;

	for (p= phrase; *p != ’\0’ ; p++) {
			
		for (q = p; *q == ’ ’; q++)
			; 		/* on "mange" les blancs (s’il y en a au debut) */
		
		deb = q; /* le debut du mot suivant eventuel */
		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 avance 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 */
		};
	}
	/* 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;
}