Ir ao conteúdo

Posts recomendados

Postado

Ola amigos. Estou com um problema para criar uma lista estatica. Preciso criar uma função criar_lista que reserve um espaço da memoria com o malloc e zere os atributos qtd da lista e idade de todos do meu vetor. Eu tinha feito o codigo sem o malloc, e estava rodando certo. Agora q decidi coloca-lo, estou tendo erro quando chamo a função inserir_final na opção 4 do menu. O programa fecha sem acusar erro, provavelmente estou passando parametro errado, mas n sei qual. A função criar lista não precisa ser necessariamente VOID, eu tinha feito antes de usar o malloc.... Onde estou errando?

 

#include <stdio.h>
#include <stdlib.h>
#define N 10// essa constante comanda o tamanho do meu vetor de pessoas do tipo pessoa
typedef struct  // uma struct que guarda dados como nome e idade de uma pessoa
{

    char nome[10];
    char idade[2];

} TIPO_PESSOA;

typedef struct // outra struct que guarda a quantidade de elementos e o tamanho da lista
{

    TIPO_PESSOA vetor[N];
    int qtd;

} TIPO_LISTA;


void criar_lista(TIPO_LISTA *list)
{
//list=malloc(sizeof(TIPO_LISTA));
//if(list != NULL){//se ainda tiver memoria
    list->qtd = 0;
// printf("\n\n\nLista criada com sucesso\n");
//}else{
//printf("\n\n\nLista nao foi criada\n");
//}


}
void inserir_final(TIPO_LISTA *list,TIPO_PESSOA ps) //aqui eu vou inserir uma ps(pessoa)
{
    fflush(stdin);
    list->vetor[list->qtd]=ps;//vou na minha lista e vou no vetor e uso o qtd para comandar ele e vai receber uma ps
    list->qtd=list->qtd+1;// aqui vou na minha qtd q esta na lista e adiciono o qtd+1
}


int menu()
{
    int op=0;

    printf("\n\n\t\t\t\t\t\t\tMenu principal\n\n\n");

    printf("1 - Criar Lista\n\n");
    printf("2 - Inserir no inicio\n\n");
    printf("3 - Inserir no meio\n\n");
    printf("4 - Inserir no final\n\n");
    printf("5 - Buscar por posicao\n\n");
    printf("6 - Listar os cadastros feitos\n\n");
    printf("8 - Sair\n\n\n");
    printf("Digite uma opcao: ");
    fflush(stdin);
    scanf("%d",&op);




    return op;
}

int main()
{
    system("mode con:cols=115 lines=40");
    TIPO_PESSOA pessoa;
    TIPO_LISTA lista;

    int op;
    do
    {
        op=menu();
        switch(op)
        {
        case 1:
            system("cls");
            criar_lista(&lista);

            break;
        case 2:

            break;
        case 3:

            break;
        case 4:
            system("cls");
            printf("\n\n\nDigite o nome: ");
            scanf("%s",pessoa.nome);//nome ja é um ponteiro entao n precisa de endereço para atribuir
            printf("Digite a idade: ");
            scanf(" %d",&pessoa.idade);// ponto porque é uma variavel normal
            inserir_final(&lista,pessoa);
            break;



        }
        system("pause");
        system("cls");

    }
    while(op!=8);


    system("pause");
    return 0;
}

 

Postado

Obrigado por responder e desculpe a demora @vangodp. O problema era que eu estava passando parametro errado mesmo, Eu recebia o endereço da lista, e queria passar o endereço do endereço da lista, ai não dava mesmo kk. valeu mesmo. Consegui terminar a lista.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!