/****************************************************************************
PROGRAMA:	wc
AUTOR:		Kiko
FECHA:		12.07.94
FINALIDAD:	Utilidad wc de UNIX: Cuenta l¡neas, palabras y caracteres de
		un fichero de texto.
COMENTARIOS:	Considera palabras cualquier secuencia de caracteres que no
		contenga espacios en blanco, tabuladores o fines de linea (\n).
HISTORIA:
BIBLIOGRAFIA:	K&R
		"El lenguaje de programaci¢n C"
		Kernighan & Ritchie
		Ed. Prentice-Hall Hispanoamericana, S. A.
		pg 20
MODO DE UTILIZACION:	El programa ejecutable es autoexplicativo
****************************************************************************/

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

#define CR 	'\r'
#define SPACE 	' '
#define TAB	'\t'
#define LF      '\n'

typedef enum {FALSE = 0, TRUE = 1} boolean;

void main(int argc, char *argv[])
{
FILE *f;		/* File handler */
int	c,		/* Caracter le¡do del fichero */
	nl, nw, nc;	/* Contadores de l¡neas, palabras y caracteres */
boolean inword;		/* Indica si se est  procesando una palabra */

if (argc < 2) {
	printf("WC Word Counter.\nCounts Lines, Words and Chars in a Text File\n\n");
	printf("Usage: wc filename\n");
	exit(0);
	}

if ((f = fopen(argv[1], "r")) == NULL) {
	printf("Error trying to open %s as input\n", argv[1]);
	exit(0);
	}

inword = FALSE;
nl = nw = nc = 0;
while ((c = fgetc(f)) != EOF) {
	nc++;
	if (c == CR)
		nl++;
	if (c == SPACE || c == CR || c == TAB || c == LF)
		inword = FALSE;
	else
		if (inword == FALSE) {
			inword = TRUE;
			nw++;
			}
	}
printf("%d %d %d\n", nl, nw, nc);
}

