• 0
Sign in to follow this  
KabalHRS

Ler arquivo e gravar numa struct

Question

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?

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this