Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ulfreitas

[Resolvido] Estrutura

Recommended Posts

Bom dia

Esse código é um cadastro de funcionário, ele possui 3 estruturas.

1º) data recebe a data de nascimento;

2º) pessoa recebe o nome, e possui a estrutura data;

3º) funcionario possui a estrutura pessoa.

Tem uma função de leitura para ler todos os dados e depois exibe o cadastro do kra;

minha dúvida é, na hora de acessar fica estranho muito grande, to fazendo certo? tem como melhorar isso?

 

#include <stdio.h>

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

typedef struct pessoa{
   char nome [30];
   data dtnasc;
};

typedef struct funcionario{
   pessoa func;
};

void ler(funcionario *f);

int main(){
   funcionario f1;

   ler(&f1);

   printf("\n\n");
   printf("Nome: %s\n",f1.func.nome);
   printf("Data nascimento: %d\\%d\\%d\n",f1.func.dtnasc.dia,
                                          f1.func.dtnasc.mes,
                                          f1.func.dtnasc.ano);

   return 0;
}

void ler(funcionario *f){
   printf("Digite o nome: ");
   gets(f -> func.nome);
   printf("\nDia: ");
   scanf("%d%*c",&f -> func.dtnasc.dia);
   printf("\nDia: ");
   scanf("%d%*c",&f -> func.dtnasc.mes);
   printf("\nDia: ");
   scanf("%d%*c",&f ->func.dtnasc.ano);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugiro a seguinte organização:

 

#include <stdio.h>

struct data
{
   unsigned char dia, mes;
   unsigned int ano;
};

struct funcionario 
{
   char nome[300];
   struct data nascimento;
};

void mostrar(struct funcionario quem)
{
   printf("\n\tNome: %s\n\tIdade: %d/%d/%d\n\n",
    quem.nome, quem.nascimento.dia,
    quem.nascimento.mes, quem.nascimento.ano);
}

int main(void)
{
   mostrar((struct funcionario) {
	"Juliana", (struct data) { 20, 2, 2002 }
    });
}

 

Compilação:

 

gcc -std=c99 -Wall -Wextra -pedantic -Werror [arquivo].c -o [nome]

 

 

Aliás, evite gets. Use fgets.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.