Ir ao conteúdo

Posts recomendados

Postado

Boa Tarde Alguem poderia me ajudar com a resolução deste exercicio.

 

 Criar uma estrutura , contendo nome, data de nascimento e CPF. Crie uma variável que é um ponteiro para esta estrutura (no programa principal). Depois crie uma função que receba este ponteiro e preencha os dados da estrutura e também uma uma função que receba este ponteiro e imprima os dados da estrutura. Finalmente, faça a chamada a esta função na função principal.

 

Posteriormente,

 

 Idem a questão acima, mas construa as funções usando referências (&).

 

//Codigo dando erro

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

typedef struct{
    char nome[60];
    char cpf[20];
    char nascimento[15];
}TipoCadastro;

int i;

TipoCadastro EfetuaCadastro(TipoCadastro *Cad, int tamanho){


    Cad=(TipoCadastro*)malloc(sizeof(TipoCadastro)*tamanho);

    for(i=0;i<tamanho;i++){

        printf("\nInforme o Nome:");
        fgets(Cad.nome,60,stdin);
        setbuf(stdin,NULL);

        printf("\nInforme o CPF no formato NNN.NNN.NNN-NN:\n");
        fgets(Cad.cpf,20,stdin);
        setbuf(stdin,NULL);

        printf("\nInforme a Data De Nascimento no formato DD/MM/AAAA:\n");
        fgets(Cad.nascimento,20,stdin);
        setbuf(stdin,NULL);
    }
return *Cad;
}

void ExibeCadstro(TipoCadastro *Cad, int tamanho){
    int i;

    for(i=0;i<tamanho;i++){

        printf("\nInforme o Nome:%s",Cad.nome);
        printf("\nInforme o CPF no formato NNN.NNN.NNN-NN:%s\n",Cad.cpf);
        printf("\nInforme a Data De Nascimento no formato DD/MM/AAAA:%s\n",Cad.nascimento);
    }
}

int main(){
    setlocale(LC_ALL,"portuguese");

    int n;

    typedef TipoCadastro *Cadastro;

    printf("\nInforme quanto Cadastros Deseja Realizar:\n");
    scanf("%d",&n);

    Cadastro=EfetuaCadastro(&Cadastro,n);//ERRO

    ExibeCadastro(Cadastro,n);/ERRO

    return 0;
}

Postado

//Codigo dando erro ?? Qual erro? Ajudar muito quando você posta o erro...no caso o output do debug/compilador :s

 

Vendo seu código, percebi os seguintes problemas:

 

Cadastro=EfetuaCadastro(&Cadastro,n);//ERRO

 

Sabendo que Cadastro é um ponteiro, então ele não possui um endereço próprio, ele apenas aponta para outro endereço, portanto não use & para um objeto que foi  declarado como ponteiro.

R: Cadastro=EfetuaCadastro(Cadastro,n);

 

Já na função EfetuaCadastro, veja que você declarou uma função que retorna uma estrutura inteira, sem ser ponteiro.

TipoCadastro EfetuaCadastro(...){

return (TipoCadastro);

}

 

é diferente de:

//Use esse

TipoCadastro *EfetuaCadastro(...){

return (TipoCadastro*);

}

 

-----

Na função ExibeCadastro:

Quando usamos um ponteiro, temos um problema, não podemos acessar seu endereço próprio, por que como dito, ele não possui, ele apenas aponta para um endereço já alocado, e isso implica em usar "->" em vez de ".", como:

 

TipoCadastro blabla;

TipoCadastro *Cad = &blabla;

 

Cad.nome; (incorreto)

Cad->nome; (correto)

 

---

Espero ter ajudado.

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!