Ir ao conteúdo
  • Cadastre-se
Visitante

Leitura de arquivo txt para uma estrutura (struct)

Recommended Posts

Visitante

Boa noite galera ! sou novo aqui, e já peço desculpas se eu falar alguma besteira ou fizer algo errado.

bem, tenho um trabalho da faculdade para entregar, e estou com problema para ler um arquivo, colocando os seus dados em uma estrutura, para maior entendimento, colocarei aqui tudo o que a questão do trabalho pede, e o código que estou com problemas. A questão é a seguinte :

(Desculpe-me) se eu acabar escrevendo muito.

Considere um vetor de ponteiros de 10 posições
– int *vetor[10]
– Cada ponteiro vai apontar para um vetor de tamanho definido pelo
usuário 
• Crie uma função insere que deve solicitar ao usuário em qual vetor
(1 a 10) deve inserir e o número a ser inserido
– Se for a primeira vez a inserir um elemento no vetor da posição, deve
solicitar ao usuário o tamanho do novo vetor e inserir.
• Crie uma função para liberar espaços da memória, o usuário deve
informar qual vetor ele quer liberar
• Crie uma função para listar os vetores, se o vetor estiver nulo,
imprimir “vetor X vazio”
• Crie uma função que imprima todos os números de todos os
vetores ordenados.
• Deve ser criado uma vetor auxiliar do tamanho de todos os
outros. Ordene o vetor auxiliar, imprima, e depois libere o
espaço de memória desse vetor auxiliar
* crie uma função para salvar os vetores em um arquivo txt.
* crie uma função para carregar (ler) esse arquivo

a questão em negrito, é a que estou com problemas, pois consigo criar e salvar o arquivo, mas n consigo carregar o mesmo.

 

/estrutura usada no código
include
include
include 
define max 10

typedef struct estrutura{

int *info;

int cont;

int tam;
} Estrutura;

// a baixo minha função para carregar o arquivo

void carregar(Estrutura *vetor){

if(modo==1){

FILE *arquivo;

int txtpos = 0, txtTam = 0, txtCont = 0, txtEle = 0,i,j;

char txtConthar[500];

arquivo = fopen("vetores.txt", "r+");

    for(i = 0; i < max; i++){

        fscanf(arquivo, "posicao:%dtam:%dcont:%d", &txtpos, &txtTam, &txtCont);

        vetor[txtpos].tam = txtTam;

        vetor[txtpos].cont = txtCont;

        vetor[txtpos].info = (int *) malloc(txtTam * (sizeof(int)));

        if(txtCont > 0){

            for(j = 0; j < txtCont; j++){

                fscanf(arquivo, "elemento:%d", &txtEle);

                vetor[txtpos].info[j] = txtEle;

            }

        }

        scanf(arquivo, "\n");

    }


fclose(arquivo);
system("pause");

}

else{

    system("pause");

}
}
                                   
// abaixo, o miolo de meu programa, eu chamo esse miolo dentro do main. A parte destacada com asterisco é a que interessa

void Miolo(Estrutura vetor[]){

int opcao;

inicializa(vetor);

menu();

scanf("%d", &opcao);

do{

    switch(opcao){

    case 1:

        insere(vetor);
        system("pause");
        system("cls");
        break;

    case 2:
        libera(vetor);
        system("pause");
		system("cls");
        break;

    case 3:
        imprime(vetor);
        system("pause");
		system("cls");
        break;
    case 4:
    	listaTodos(vetor);
    	system("pause");
    	system("cls");
    	break;
//case onde chamo a função carregar.
case 5:
** carregar(vetor);**
** system("pause");**
**	system("cls");**
** break;**

	  case 6:
	  	salvarComo(&modo);

		if(modo == 1)

            salvarTexto(vetor);

        else

            salvarBinario(vetor);

        printf("Arquivo Salvo\n");

		system("pause");
		system("cls");
        break;

    default:

        printf("\nValor inválido!\n");
        system("pause");
		system("cls");
        break;

  
    }

    menu();

    scanf("\n%d", &opcao);

}while(opcao != 0);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais importante que mostrar sua função para carregar arquivos seria mostrar o arquivo o que contem para que tenhamos a possibilidade de checkar se está correto sua função. Se puder subir o tal arquivo ou pelo menos escrever aqui seu conteúdo seria o correto. Ou bem você pode pegar o código inteiro aqui ou dentro de um rar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×