#include <stdio.h>
#include <stdlib.h>             /* para obter os simbolos EXIT_* */

int main(void)                  /* se nao tem parametros usa-se void! */

{
    char nome[FILENAME_MAX+1];  /* para guardar o nome do ficheiro. */
    FILE *entrada;
    int c;                      /* getc() devolve int (por causa do valor
                                   especial EOF, que normalmente e' 
                                   negativo. */

    /* Obter nome do ficheiro a mostrar: */
    printf("Qual o ficheiro a mostrar? ");
    if(fgets(nome, FILENAME_MAX+1, stdin) == 0)
    {
        fprintf(stderr, "Erro na leitura do nome.\n");
        return EXIT_FAILURE;
    }
    /* Eliminar o fim-de-linha: */
    if(nome[strlen(nome)-1] == '\n')
        nome[strlen(nome)-1] = '\0';

    /* Abrir o ficheiro de entrada: */
    if((entrada = fopen(nome, "r")) == 0)
    {
        fprintf(stderr, "Erro abrindo o ficheiro \"%s\".\n", nome);
        return EXIT_FAILURE;
    }

    /* Ler um caracter e mostra'-lo enquanto nao se atingir o fim do
       ficheiro: */
    while((c = getc(entrada)) != EOF)
        putchar(c);
    /* Houve erros de escrita? */
    if(ferror(stdout))
    {
        fprintf(stderr, "Erro ao escrever!\n");
        return EXIT_FAILURE;
    }
    
    /* Fechar ficheiro de entrada: */
    fclose(entrada);

    return EXIT_SUCCESS;        /* como tudo correu bem... */
}