I can’t add the name to the struct

Asked

Viewed 33 times

1

typedef struct Pessoa {
    int id_pessoa;
    char nome[100];
    int idade;
    float peso;
}PESSOA;

//FUNÇÃO PARA PEDIR OS DADOS DA PESSOA
PESSOA DadosPessoa(int nrpessoas)
{
    PESSOA *pessoa = (PESSOA *)malloc(sizeof(struct Pessoa));
    printf("\nID? ");
    scanf_s(" %d", &pessoa->id_pessoa);
    //printf("Nome? ");
    //scanf_s(" %s", pessoa->nome); //NÃO ESTÁ A ADICIONAR NA ESTRUTURA O NOME 
    printf("Idade? ");
    scanf_s(" %d", &pessoa->idade);
    printf("Peso? ");
    scanf_s(" %f", &pessoa->peso);
    printf("-------------||------------||--------------\n");

    return *pessoa;
}

void AdicionarPessoa(PESSOA *pessoa, int nrpessoas) {
    for (int i = 0; i < nrpessoas; i++)
    {
        *(pessoa + i) = DadosPessoa(nrpessoas);
    }
}

void MostrarPessoa(PESSOA *pessoa, int nrpessoas) {
    if (nrpessoas == 0)
    {
        printf("\nNao existe nenhuma pessoa inserida");
    }
    else
    {
        int nrdapessoa;
        printf("\nID'S EXISTENTES: \n");
        for (int i = 0; i < nrpessoas; i++)
        {
            printf("ID: %d |", (pessoa + i)->id_pessoa);
        }
        printf("\n-------------||------------||--------------");
        printf("\nQual e o ID que deseja consultar?\n");
        scanf_s("%d", &nrdapessoa);

        for (int i = 0; i < nrpessoas; i++)
        {
            if ((pessoa + i)->id_pessoa == nrdapessoa)
            {
                printf("ID: %d\n", (pessoa + i)->id_pessoa);
                //printf("NOME: %s \n", (pessoa + i)->nome); // NÃO ESTÁ A INSERIR LOGO NÃO MOSTRA :(
                printf("IDADE: %d anos\n", (pessoa + i)->idade);
                printf("PESO: %.2f Kg", (pessoa + i)->peso);
            }
        }
    }
}
char Menu() {
    char opcao;
    do
    {
        printf("\n-------------||------------||--------------");
        printf("\n1 - Adicionar Pessoa");
        printf("\n2 - Editar Pessoa");
        printf("\n3 - Apagar Pessoa");
        printf("\n4 - Mostrar Pessoa");
        printf("\n0 - Sair");
        printf("\nOpcao?-> ");
        scanf_s(" %c", &opcao);
        printf("-------------||------------||--------------");
    } while (opcao <'0' || opcao >'4');
    return opcao;
}

int main() {
    PESSOA *pessoa = (PESSOA *)malloc(sizeof(struct Pessoa));
    int nrpessoas=0;
    char opcao;
    do
    {
        opcao = Menu();
        switch (opcao) {
        case '1':
            printf("\nNumero de pessoas? ");
            scanf_s("%d", &nrpessoas);
            printf("-------------||------------||--------------");
            AdicionarPessoa(pessoa, nrpessoas);
            break;
        case '2':
            //EditarPeso(pessoa, nrpessoas);
            break;
        case '3':
            break;
        case '4':
            MostrarPessoa(pessoa, nrpessoas);
            break;
        }
    } while (opcao != '0');
    return 0;
}
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.