C - Ler no arquivo e jogar numa struct

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



[code]
#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);
}

}[/code]

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?

acho que esse codigo pode ajudar em alguma coisa um jeito mais facil de ler o arquivo.

#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];
};

int main(int argc, char **argv) {
    FILE * fp = fopen("test.dat", "wb");
    struct dados dd;
   ...
   escreva os dados da struct dados.
   ...
   fwrite(&dd, sizeof(struct dados), 0, fp); 
   fclose(fp);
   
    FILE * fp2 = fopen("test.dat", "wb");
    struct dados dd2;
    fread(&dd2, sizeof(struct dados), 0, fp2);
    fclose(fp2);
   
}