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