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

int main(int argc, char *argv[])

{
    FILE *entrada;
    int c, c_antes;
    unsigned long ncar, npal, nlin;

    /* Ha' argumentos suficientes? */
    if(argc != 2)
    {
        fprintf(stderr, "Tem de passar um argumento!\n");
        return EXIT_FAILURE;
    }

    if((entrada = fopen(argv[1], "r")) == 0)
    {
        fprintf(stderr, "Erro abrindo o ficheiro \"%s\".\n", argv[1]);
        return EXIT_FAILURE;
    }
    ncar = npal = nlin = 0;
    c_antes = '\n';
    while((c = getc(entrada)) != EOF)
    {
        ncar++;
        if(c == '\n')
            nlin++;
        if(isspace(c) && !isspace(c_antes))
            npal++;
        c_antes = c;
    }
    if(!isspace(c_antes))
        npal++;
    if(c_antes != '\n')
        nlin++;
    printf("Ficheiro \"%s\":\n", argv[1]);
    printf("Linhas:     %lu\n", nlin);
    printf("Palavras:   %lu\n", npal);
    printf("Caracteres: %lu\n", ncar);

    fclose(entrada);

    return EXIT_SUCCESS;
}