Ir para conteúdo
Fórum Script Brasil
  • 0

Ler arquivo e gravar numa struct


KabalHRS

Pergunta

Estou com um problema que pensei ser simples. Ler dados num arquivo txt, os dados sempre terão tamanho fixo (ex. codigo tem 8 caracteres, cpf 14, nome 47...) e salvá-los numa struct.

1234 76543FULANO DE TAL ENDERECORUATAL BAIRROCENTRO CIDADEBH MG

...

...

...

...

#include <stdio.h>

struct dados { 
    int codigo[8];
    char cpf[14];
    char nome[47];
    char endereco[50];
    char bairro[20];
    char municipio[20];
    char uf[2];
};

typedef struct dados info;

main(){ 
    
    FILE *arq;
    char Linha[164];
    char Linha2[6][164];
    char *result;
    info registro[6];
    int i,j;
    arq = fopen("FORN.txt", "rb");
    if (arq == NULL){
        printf("Problemas na abertura do arquivo\n");
        return;
    }
    i=0;
    while (!feof(arq)){
        fgets(registro[i].codigo, 9, arq); 
        fgets(registro[i].cpf, 16, arq); 
        fgets(registro[i].nome, 49, arq); 
        fgets(registro[i].endereco, 51, arq); 
        fgets(registro[i].bairro, 21, arq); 
        fgets(registro[i].municipio, 21, arq); 
        fgets(registro[i].codigo, 3, arq); 
        i++
    }
    for(i=0;i<6;i++){
    printf("\n%d\n", registro[0].codigo);
    printf("%s\n", registro[0].cpf);
    printf("%s\n", registro[0].nome);
    printf("%s\n", registro[0].endereco);
    printf("%s\n", registro[0].bairro);
    printf("%s\n", registro[0].municipio);
    printf("------%s\n", registro[0].uf);
    fclose(arq);
    }
}

Já tentei usando GETC, FGETS, FSCANF, FREAD, até consigo ler mas o problema é quando quero pegar a string que recebeu os valores e jogar na struct. Alguma idéia?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Os dados são binários ou texto? Se forem binários, é só você usar a função fread, lendo direto na struct.

Se forem texto, será necessário ler a linha para uma variável, e depois separá-la com sscanf ou uma função similar.

fread(&registro[i], sizeof(info), 1, arq);

Abraços.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...