sexta-feira, 12 de dezembro de 2014

End Of File (EOF)

End Of File (EOF)

   Hoje irei falar sobre o End Of File (EOF) conhecido como Final de Arquivo. O EOF pode ser utilizado em um programa quando você for fazer um programa que leia um arquivo de texto com um número indeterminado de linha.
   Para fazermos o teste usaremos o terminal do Linux e a IDE de trabalho CodeBlocks.

   O processamento utilizado sera um processamento qualquer, que no caso faz a inversão de cada linha, lembrado é um processamento qual quer ele não se restringe só neste que irei mostrar.
faça o seguinte código:

void limparBuffer(void){
   char c;
   while ((c=getchar())!='\n'&& c!=EOF);
}

int main(){
   char str[tam];
   int c,i;
   while(scanf("%[^\n]",str)!=EOF){
      c=strlen(str);
      for(i=c;i>=0;i--){
         printf("%c",str[i]);
      }
       printf("\n");
      limparBuffer();
}

   Como já foi dito em um Post anterior, nós usaremos a função de Limpeza de Buffer para limpar o buffer e não atrapalhar na leitura do nosso arquivo, o EOF aparece tanto na função quanto no código. Na função ele aparece para limpa caractere por caractere ate que seja encontrado o Enter ou ate que seja encontrado o EOF que é o nosso caso. Já no código ele é usado para ler varias linhas de um arquivo ate que acabe, quando acabar ele retorna o EOF que consecutivamente para o programa ali.

   Agora faremos um arquivo de texto de preferencia .txt com o nome de in.txt (de input) que recebera o algumas linhas. Este arquivo tem que ficar dentro da pasta raiz do programa para ser executado com maior facilidade.

Andre
Athos
Fernando
Leticia

   Agora iremos executar o programa, para executar no terminal faça o seguinte. Aperte Ctrl+F9 no CodeBlocks para somente compilar o programa, olhe no build log para saber se houve algum erro, caso não tenha vá para a pasta onde o código fonte do programa esta pelo terminal e faça o seguinte código: “./nome_do_programa < in.txt”, caso não tenha usado a função de limpeza de buffer ele entrara em loop pois ira ler somente a primeira linha infinitamente e não encontra o EOF para poder para, dando algo parecido com isso:

erdnA
erdnA
erdnA
erdnA
erdnA
erdnA
...

Caso tenha dado certo o resultado deve ser parecido com esse:

erdnA
sohtA
odnanreF
aiciteL


 Bom pessoal espero que tenha gostado e ate mais.

Nenhum comentário:

Postar um comentário