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

Leitura de arquivo txt para uma estrutura (struct)


Lucio_Leandro

Pergunta

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);
}

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,3k
×
×
  • Criar Novo...