Boa Noite, estou começando agora estruturas e estou com Dúvidas com struct, na hora de imprimir todos os registros da um erro já tentei refazer mas nao encontro o erro
#include <stdio.h>
#include <stdlib.h>
// Lista de Structs ======
struct rgData
{
int dia, mes, ano;
};
struct rgFuncionario
{
char nome[35];
char cargo[15];
char cpf[12];
int matr;
struct rgData dtNasc;
float sal;
};
struct rgCadFun
{
struct rgFuncionario vCadFun[50];
int controle;
};
// Lista de Protótipos de Funções
void menu();
void cadastrar(struct rgCadFun *pCadastro);
void Imprimir_1(struct rgCadFun Cadastro);
int main()
{
menu();
}
void menu()
{
struct rgCadFun Cadastro;
Cadastro.controle = 0;
int op;
do
{
// impressão em tela da lista de opções
printf("\n\n ----------------------------------");
printf("\n Escolha uma das opções abaixo: ");
printf("\n 1 - Cadastrar Funcionario");
printf("\n 2 - Imprimir por Matricula");
printf("\n 3 - Imprimir todos os Registros");
printf("\n 4 - Validar CPF");
printf("\n 0 - SAIR \n\n >> ");
scanf("%d", &op);
switch(op) // tratamento da opção realizada pelo usuário
{
case 1:
cadastrar(&Cadastro);
system("pause");
system("cls");
break;
case 2:
Imprimir_1(Cadastro);
// exercicio2_v2();
system("pause");
system("cls");
break;
case 0:
break;
case 3:
Imprimir_todos(Cadastro);
//exercicio3_v1();
//exercicio3_v2();
system("pause");
system("cls");
break;
case 4:
//exercicio4();
system("pause");
system("cls");
break;
default:
printf("\n >>>> Digite um valor valido!!! <<<< \n\n");
system("pause");
system("cls");
break;
}
}
while( op != 0 );
}
void cadastrar(struct rgCadFun *pCadastro)
{
pCadastro->controle = pCadastro->controle + 1;
pCadastro->vCadFun[pCadastro->controle-1].matr = pCadastro->controle;
printf("\n\n MATRICULA = %d", pCadastro->vCadFun[pCadastro->controle-1].matr);
printf("\n Digite um nome completo: \n");
fflush(stdin);
gets(pCadastro->vCadFun[pCadastro->controle-1].nome);
//scanf("%[^\n]s", pCadastro->vCadFun[pCadastro->controle-1].nome);
//fgets(pCadastro->vCadFun[pCadastro->controle-1].nome, 35, stdin);
printf("\n\n Digite o Cargo: \n");
fflush(stdin);
gets(pCadastro->vCadFun[pCadastro->controle-1].cargo);
printf("\n Digite o dia de nascimento: \n");
scanf("%d", &pCadastro->vCadFun[pCadastro->controle - 1].dtNasc.dia);
printf("\n Digite o mes de nascimento: \n");
scanf("%d", &pCadastro->vCadFun[pCadastro->controle - 1].dtNasc.mes);
printf("\n Digite o ano de nascimento: \n");
scanf("%d", &pCadastro->vCadFun[pCadastro->controle - 1].dtNasc.ano);
printf("\n Digite o Salario: \n");
scanf("%f", &pCadastro->vCadFun[pCadastro->controle - 1].sal);
printf("\n Digite o CPF: \n");
fflush(stdin);
gets(pCadastro->vCadFun[pCadastro->controle-1].cpf);
}
void Imprimir_1(struct rgCadFun Cadastro)
{
int matric;
printf("\nDigite o numero da matricula: \n");
scanf("%d", &matric);
printf("\nNome: %s", Cadastro.vCadFun[matric - 1].nome);
printf("\n Data de Nascimento: %d / %d / %d", Cadastro.vCadFun[matric - 1].dtNasc.dia, Cadastro.vCadFun[matric - 1].dtNasc.mes, Cadastro.vCadFun[matric - 1].dtNasc.ano);
printf("\nCargo: %s", Cadastro.vCadFun[matric-1].cargo);
printf("\nCPF: %s", Cadastro.vCadFun[matric-1].cpf);
}
void Imprimir_todos(struct rgCadFun Cadastro)
{
int matric, i;
for(i=0; i < Cadastro.controle; i++)
{
printf("Numero da matricula: %d\n", i+1);
printf("Nome: %s\n", controle.nome );
printf("Data de Nascimento: %d / %d / %d \n ", controle.dtNasc.dia, controle.dtNasc.mes, controle.dtNasc.ano);
printf("Cargo: %s\n", controle.cargo);
printf("CPF: %s\n", controle.cpf);
}
}