Eu estou tentando fazer um programa que lê e imprime variáveis de uma struct, a leitura ocorre normal, mas imprime uns dados nada a ver com o que eu inseri não sei exatamente o que estou fazendo errado.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
long int idPacote;
char nomePacote[50];
}Pacote;
void cadastrarPacote(Pacote *vec_pacote, int *n);
void imprimirPacote(Pacote *vec_pacote, int *n);
int main(){
int op, a;
Pacote *vec_pacote = (Pacote*) malloc (sizeof(Pacote));
do{
printf("Insira a opcao: ");
scanf("%d", &op);
switch(op){
case 1:
cadastrarPacote(vec_pacote, &a);
break;
case 2:
imprimirPacote(vec_pacote, &a);
break;
case 3:
printf("Encerrando o programa...");
break;
default:
printf("tenta outra coisa amadah ");
}
}while(op != 3);
free(vec_pacote);
return(0);
}
void cadastrarPacote(Pacote *vec_pacote, int *n){
int op, i=1;
do{
printf("ID do pacote: ");
scanf("%ld", &(vec_pacote+i)->idPacote);
printf("Nome do pacote: ");
scanf(" %[^\n]", (vec_pacote+i)->nomePacote);
printf("Deseja continuar? 1-s 0-n\n");
scanf("%d", &op);
if(op == 1){
i = i + 1;
vec_pacote = (Pacote*) realloc (vec_pacote, (i+1) * (sizeof(Pacote)));
}
}while(op == 1);
*n = i;
}
void imprimirPacote(Pacote *vec_pacote, int *n){
for(int i=1; i<=*n; i++){
printf("\nID do pacote: %d\n", (vec_pacote+i)->idPacote);
printf("Nome do pacote: %s\n", (vec_pacote+i)->nomePacote);
}
}