Jump to content

[Duvida] Passagem de parametros para Structs


Strabush
 Share

Recommended Posts

Boas pessoal.

Estou cá com uma duvida algo simples mas não consigo encontrar a solução.

O codigo consiste no seguinte: tenho uma struct que guarda alguns dados que o utilizador introduz, e na main chamo por ela, e não se que parametros usar. Eis o codigo:

struct cliente{
   int numCliente;
   char nomeCliente[50];
   char sexo[2];
   char resid[50];
   char tel[9];
   char mail[50];
};
typedef struct cliente CLIENTE;

struct data{
   int dia, mes, ano;
};
typedef struct data DATA;

void criaCliente(CLIENTE x, DATA y){

   srand( (unsigned int) time(NULL) );    
    x.numCliente = 1000+rand()%(1500-1000+1);
   printf("Nome: ");
   scanf("%s", &x.nomeCliente);
   printf("Data de Nascimento(ex: 02 05 1989): ");
   scanf("%d %d %d", &y.dia, &y.mes, &y.ano);
    printf("Sexo(M ou F): ");
   scanf("%c", &x.sexo);
   printf("Residência: ");
   scanf("%[^\n]", &x.resid);
   printf("Telefone: ");
   scanf("%s", &x.tel);
   printf("Email: ");
   scanf("%s", &x.mail);
}

int main(){

   int op;

   do{
   printf("1 - Criar Cliente");
   printf("0 - Sair");
   scanf("%d", &op);

   switch (op){
   case 1: criaCliente();
          break;
   }
   } while (op != 0);

}

É só repararem pro main no "case 1", a função criaCliente, que paramentros deve receber?

Obrigado.

Link to comment
Share on other sites

Obrigado Baderous.

Ja tinha tentado isso, mas deu-me erros, eis eles:

warning C4700: uninitialized local variable 'data' used

warning C4700: uninitialized local variable 'cliente' used

error LNK2005: _main already defined in 3ºworkV1.obj

fatal error LNK1169: one or more multiply defined symbols found

E diz também que o scanf não é seguro.

Link to comment
Share on other sites

Consegui a solução. Venho cá partilhá-la porque pode ajudar alguém penso eu.

1º Método: Temos de criar a função criaCliente da seguinte forma: CLIENTE criaCliente(); ou seja, função do tipo cliente.

2º Método: Usando apontadores. Basta chamar a função criaCliente com os endereços do struct, e a função criaCliente recebe como apontar. Na pratica é assim:

void criaCliente(CLIENTE * p, CLIENTE * pa){

puts("digite o nome");
fgets(pc->nomeCliente);

}

int main(){

criaCliente(&cliente,&data);

}
Link to comment
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
 Share

×
×
  • 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.