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