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

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

#define TAILLE 500

int main () {
	char phrase[TAILLE] = "";
	int ascii[128] = {0}; /* ascii est initialise d'abord partout avec 0 apparition */
	char c;
	char *p;
	
	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 remplacant par '\0' */
	*p = '\0';
	
	/* on remplit le tableau ascii[] des 128 entiers correspondant aux apparitions */
	for (p= phrase; *p != '\0' ; p++) {
		c = *p;
		ascii[(int) c] = ascii[(int) c] + 1;
	}

	printf("Code  caractere occurrences\n");
	for (int i = 0; i < 128 ; i++) {
		if ( i > 31) /* le caractere de code i est imprimable */
			printf(" %d     %c        %d \n", i, i, ascii[i]);
		else /* caractere non imprimable */
			printf(" %d              %d \n", i, ascii[i]);
	}
	
	return EXIT_SUCCESS;
}