void listar_data(bd * bdv) { //Listar por data
char dn[4];
int i = 0, a = 0, n = 0;
char dia_ins[2];
char mes_ins[2];
char dia_aux[2], mes_aux[2];
while (i != 3) {
printf("1-Listar por Data de Nascimento (Dia/Mes)\n2-Listar por Mes de nascimento\n3-Voltar ao menu anterior\n");
scanf("%d", &i);
if (i == 3) {
return 0;
}
if (i == 1) {
printf("Introduza o dia(com 2 digitos)\n");
scanf("%s", &dia_ins);
printf("Introduza o mes(com 2 digitos)\n");
scanf("%s", &mes_ins);
//printf("%s , %s, %s", atoi(data_ins));
for (n = 0; n < bdv->npessoas; n++)
{
dia_aux[0] = bdv->vp[n].datanasc[0];
dia_aux[1] = bdv->vp[n].datanasc[1];
mes_aux[0] = bdv->vp[n].datanasc[3];
mes_aux[1] = bdv->vp[n].datanasc[4];
if (dia_aux[0] == dia_ins[0] && dia_aux[1] == dia_ins[1]) {
if (mes_aux[0] == mes_ins[0] && mes_aux[1] == mes_ins[1]) {
printf("%d %s\n", bdv->vp[n].codigo, bdv->vp[n].nome);
}
}
}
}
if (i == 2)
{
printf("Introduza o mes(com 2 digitos)\n");
scanf("%s", &mes_ins);
for (n = 0; n < bdv->npessoas; n++)
{
mes_aux[0] = bdv->vp[n].datanasc[3];
mes_aux[1] = bdv->vp[n].datanasc[4];
if (mes_aux[0] == mes_ins[0] && mes_aux[1] == mes_ins[1]) {
printf("%d %s\n", bdv->vp[n].codigo, bdv->vp[n].nome);
}
}
}
}
}
#include "struct_cidadao.h"
typedef struct {
pessoa *vp;
int npessoas;
}bd;
#define MAX_NOME 200
#define MAX_CIDADE 100
#define MAX_DATA 11
typedef struct {
int codigo;
char nome[MAX_NOME];
char localidade[MAX_NOME];
char datanasc[11];
int idade;
}pessoa;
Se eu não correr nenhuma função, ou seja, carregar logo no 3 (voltar ao menu anterior), ele vai mas se eu executar uma das funções ou as duas e depois quiser voltar ao menu anterior aparece aquele erro. O erro será que esta no ciclo while ?
Obrigado desde já.
Cumps. jorge618
Edit : Esqueci-me de por a imagem
↧