Jump to content
Sign in to follow this  
JonnyC

Problema em ligar os voids em menu

Recommended Posts

JonnyC

Boas, estou a fazer um trabalho para uma cadeira de IP e  deparei-me com um erro que acho esquisito, tenho o seguinte codigo e quando tento por este void num menu como link ele dá o seguinte erro:

"too few arguments to function `void gravar_registos(registos*,int)` 

typedef struct agenda 
{
       int cod;
       int num;
       char nome[30];
       char endereco[100];
       char email[100];
       int dia_nasc;
       int mes_nasc;
       int ano_nasc;
       char sms[100];
       int tel;
       int tele;
       int vazio; //VAZIO = 0 e DISPONIVEL = 1.
} registos;

void insereregisto(struct agenda* a, int i_agenda, char lixo)
{
     ((a)->cod)=i_agenda;
     printf("Introduza o seu nome:\n");
     gets((a)->nome);
     printf("Introduza a data de nascimento (dd/mm/aaaa):\n");
     scanf("%d/%d/%d", &(a)->dia_nasc, &lixo, &(a)->mes_nasc, &lixo, &(a)->ano_nasc);
     printf("Introduza a morada:\n");
     gets((a)->endereco);
     printf("Introduza o e-mail:\n");
     gets((a)->email);
     printf("Introduza o numero de telefone:\n");
     scanf("%d", &(a)->tel);
     getchar();
     printf("Introduza o numero de telemovel:\n");
     scanf("%d", &(a)->tele);
     getchar();
     return;
}

Share this post


Link to post
Share on other sites
bubulindo

Assim de repente vejo dois erros nesse programa.

return;

Estás a retornar o quê? Normalmente usa-se return qualquer_variável_do_mesmo_tipo_definido_no_inicio_da_funcao;

O outro é este composto com o return sem tipo

void insereregisto(struct agenda* a, int i_agenda, char lixo)

Aqui definiste que esta função não retorna nada... ou seja, a função não deve ter em lado nenhum a instrução "return".

Comenta a linha do return e vê se funciona melhor.


include <ai se te avio>

Mãe () {

}

Share this post


Link to post
Share on other sites
Localhost

@bubulindo: tens a certeza que isso é assim? Penso que a instrução return (isolada) pode ser utilizada em todos os casos.

Quanto à dúvida inicial, podes mostrar as chamadas que são feitas a essa função? O erro está nas chamadas e não na função em si, deves estar a "enviar" para a função menos argumentos do que aqueles que declaras no cabeçalho da mesma.


here since 2009

Share this post


Link to post
Share on other sites
bubulindo

O void normalmente dá erro com um return... usar um return isolado é estranho... mas pode ser que funcione.

void gravar_registos(registos*,int)`
o erro diz isto, a definição da função é esta.
void insereregisto(struct agenda* a, int i_agenda, char lixo)
provavelmente, como disse o Localhost tens uma chamada com argumentos a menos.

Hoje não estou bem. :\


include <ai se te avio>

Mãe () {

}

Share this post


Link to post
Share on other sites
jpedro20

O void normalmente dá erro com um return... usar um return isolado é estranho... mas pode ser que funcione.

funciona.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.