Ler um arquivo txt e formatá-lo de acordo com um layout

O seguinte programa mostra como, a partir de um arquivo posicional em .txt, formatá-lo e apresentar na tela a partir de um layout pré estabelecido.
Ex de arq pos:

DAVI      RUA PAULINOFARIA 95 101001010100000599992
CELSO     RUA SANTA CELIA 4395101001010300000599992
VIVIAN    RUA ANTONIO PRADO 48101001010200000599992
RAFAEL    RUA VISCONDE 295    123001252399999999999
CAROLINA  RUA XYZ 45          123001251500000000221
DANI      RUA ASDF 87         121001232100056987771
MARCOS    RUA XXMN 09         121000001100022514111

A partir deste arquivo, temos o seguinte layout:

Nome – a10
Endereco – a20
Conta – n10
Saldo – n10
Dec_Saldo – n1

A partir desses dados, temos o seguinte programa:

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

void layout(FILE *arq);
FILE* abre_arq();

main()
{
      FILE *arq = NULL;
      arq = abre_arq();
      if (arq)
         layout(arq);
      
          system("PAUSE");
}

FILE* abre_arq()
{
      FILE *arq = NULL;
      char caminho[15];
      printf("Digite o nome do arquivo: ");
      gets(caminho);
      arq = fopen(caminho, "r");
      if (arq)
         return arq;
      else
          {
                printf("Erro na abertura do arquivo\n");
                return NULL;
          }
}

void layout(FILE *arq)
{
     char linha;
     
     if(!arq)
     {
        printf("Erro");
        system("pause");
      }
      
      else      
          do
          {
            printf("\nNome....: ");
            for (int i = 0;i < 10; i++)
            {
               linha = getc(arq);
                printf("%c", linha);
            }
          
            printf("\nEndereco: ");
            for (int i = 10;i < 30; i++)
            {
               linha = getc(arq);
                printf("%c", linha);
            }
          
            printf("\nConta...: ");
            for (int i = 30;i < 40; i++)
            {
               linha = getc(arq);
                printf("%c", linha);
            }
     
            printf("\nSaldo...: ");
            for (int i = 40;i < 50; i++)
            {
               linha = getc(arq);
                printf("%c", linha);
            }
          
            linha = getc(arq);
            printf(",%c", linha);
          
            linha = getc(arq);
          
            printf("\n---------------------------");
          
          } while(!feof(arq));
      
      printf("\n\n");
}

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s