jorge618 Posted December 31, 2016 at 03:33 PM Report #601624 Posted December 31, 2016 at 03:33 PM 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
HappyHippyHippo Posted December 31, 2016 at 04:03 PM Report #601625 Posted December 31, 2016 at 04:03 PM isto não e um jogo do adivinha. Diz exactamente qual e a mensagem de erros, assim qual a linha que a origina IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jorge618 Posted December 31, 2016 at 04:10 PM Author Report #601626 Posted December 31, 2016 at 04:10 PM 5 minutos atrás, HappyHippyHippo disse: isto não e um jogo do adivinha. Diz exactamente qual e a mensagem de erros, assim qual a linha que a origina o programa executa, não há nenhuma linha que origina o erro. Tem razão esqueci-me de colocar a imagem
HappyHippyHippo Posted December 31, 2016 at 04:18 PM Report #601627 Posted December 31, 2016 at 04:18 PM qual o tamanho de memoria reservado quando instancias a variavel mes_ins ? qual o tamanho de memória de uma string de dois caracteres? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jorge618 Posted December 31, 2016 at 04:45 PM Author Report #601628 Posted December 31, 2016 at 04:45 PM (edited) acho que não reservei memoria para a variável. Acho que é 2 bits(mas não tenho a certeza). Não tenho certezas de nada... Edited December 31, 2016 at 04:45 PM by jorge618
HappyHippyHippo Posted December 31, 2016 at 04:56 PM Report #601629 Posted December 31, 2016 at 04:56 PM (edited) quando declaras uma variavel (instanciar) estas sempre a reservar memória. Olha para a declaração da variavel em questão e responde a pergunta. no que toca ao tamanho da string, suponho que estas a responder 2 bytes. Se sim, diz que valores são necessários para guardar a string "ab" em memória? Por outras palavras, que valores existem em cada byte da c-style string Edited December 31, 2016 at 04:57 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jorge618 Posted December 31, 2016 at 05:07 PM Author Report #601630 Posted December 31, 2016 at 05:07 PM (edited) uma string de 2 caracteres não ocupa 2 bytes, ou seja o mês_ins também vai ocupar 2 bytes se eu não estiver em erro. Se sim, diz que valores são necessários para guardar a string "ab" em memória? Por outras palavras, que valores existem em cada byte da c-style string Não lhe sei responder a esta questão. Edited December 31, 2016 at 05:08 PM by jorge618
Xendro Posted December 31, 2016 at 05:08 PM Report #601631 Posted December 31, 2016 at 05:08 PM 1 minuto atrás, HappyHippyHippo disse: quando declaras uma variavel (instanciar) estas sempre a reservar memória. Olha para a declaração da variavel em questão e responde a pergunta. no que toca ao tamanho da string, suponho que estas a responder 2. Se sim, diz que valores são necessários para guardar a string "ab" em memória? Por outras palavras, que valores existem em cada byte da c-style string desculpa intrometer-me mas acho que devias lembrar o "jorge618" de que uma variavel string deve ter um terminador 'null' (em C) que necessita de um byte.
HappyHippyHippo Posted December 31, 2016 at 05:08 PM Report #601632 Posted December 31, 2016 at 05:08 PM a tua frase não da sentido. Escreve em portugues IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
HappyHippyHippo Posted December 31, 2016 at 05:10 PM Report #601633 Posted December 31, 2016 at 05:10 PM (edited) 1 minute ago, Xendro said: desculpa intrometer-me mas acho que devias lembrar o "jorge618" de que uma variavel string deve ter um terminador 'null' (em C) que necessita de um byte. não sou eu que tenho de o lembrar. E ele que tens de se recordar das aulas. Porque achas que ando a volta desse assunto desde o inicio do topico acredita que depois de se lembrar nunca mais iria se esquecer dos problemas que originam se esquecer de algo tao fundamental Edited December 31, 2016 at 05:11 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jorge618 Posted December 31, 2016 at 05:13 PM Author Report #601634 Posted December 31, 2016 at 05:13 PM jorge618 vai ocupar 5bytes(por ser 5 chars)+12(por ser 3 inteiros)+1 (/0) ?
HappyHippyHippo Posted December 31, 2016 at 05:15 PM Report #601635 Posted December 31, 2016 at 05:15 PM de que estas a falar agora? Da string "ab" que perguntei? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jorge618 Posted December 31, 2016 at 05:17 PM Author Report #601636 Posted December 31, 2016 at 05:17 PM (edited) 6 minutos atrás, HappyHippyHippo disse: de que estas a falar agora? Da string "ab" que perguntei? era do meu nick. Ou como é tudo char conta tudo como 1? tipo 1[j]+1[o]+1[r]+1[g]+[e]+1[6]+1[1]+1[8]+1[/0] ? Mas da string ab vai ocupar 3 bytes,(a[1]+b[1]+/0[1])certo? Edited December 31, 2016 at 05:23 PM by jorge618
HappyHippyHippo Posted December 31, 2016 at 05:22 PM Report #601637 Posted December 31, 2016 at 05:22 PM (edited) nem vou comentar a absurdidade que escreveste na resposta anterior, do teu nick (vou supor que estas cansado). agora que sabes que necessitas de N+1 bytes para guardar uma string com N carateres, diz (olhando para a declaração da variavel que e indicada no erro) quantos bytes estas a dizer que esta tem? ps: Não voltes a escrever /0, quanto muito '\0' Edited December 31, 2016 at 05:24 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
jorge618 Posted December 31, 2016 at 05:27 PM Author Report #601638 Posted December 31, 2016 at 05:27 PM Problema resolvido! Obrigado mais uma vez
PsySc0rpi0n Posted December 31, 2016 at 06:55 PM Report #601639 Posted December 31, 2016 at 06:55 PM Esse problema até pode ter ficado resolvido mas no futuro vais continuar a ter os mesmos problemas! Não dissecaste a tua dúvida até ao fim e por isso vais continuar a tê-la! Kurt Cobain - Grunge misses you Nissan GT-R - beast killer
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now