#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... */
}