Ir ao conteúdo

Imprimir os cadastros da struct


FebenSss

Posts recomendados

Postado

Boa noite galera, não estou conseguindo imprimir meus cadastros, alguem pode me ajudar? Obrigado.

#include <stdio.h>
#include <stdlib.h>
#define max 5

struct Pilha{
char nome[50];
int id,cont;
int vet[max];
};

typedef struct Pilha pilha;

pilha* pilhaCria(void){
pilha* p;
p = (pilha*)malloc(sizeof(pilha));
p->cont = 0;
return p;
}

void cadastrar(){
pilha* p;

if(p->cont==max){
printf("Capacidade da pilha esgotada");
exit(1);
}
printf("\n\tDIGITE NOME: ");
scanf("%s",&p->nome);
printf("\n\tDIGITE ID: ");
scanf("%d",&p->id);
main();
}

void imprimir(){
pilha* p;
int i;

for(i=p->cont-1;i>=0;i--);
printf("\n\n\t",p->vet[i]);
}

int main(){
int op;

printf("\n\t1- CADASTRAR.");
printf("\n\t2- MOSTRAR.");
printf("\n\t3- SAIR.");
printf("\n\n\tOPCAO: ");
scanf("%d",&op);
switch(op){
case 1: cadastrar(); break;
case 2: imprimir(); break;
case 3: exit(1);
default: printf("\n\n\tOPCAO INVALIDA!!!\n\n\n");
}
system("pause");
return 0;
}

Postado

Bem, eu acho que você devia colocar esse "pilha* p", como global já que quando você cria na função ela só é da função, ela só funciona dentro da função, tenta fazer assim:


#include <stdio.h>
#include <stdlib.h>
#define max 5

struct Pilha{
char nome[50];
int id,cont;
int vet[max];
};

typedef struct Pilha pilha;
pilha* p;

pilha* pilhaCria(void){

p = (pilha*)malloc(sizeof(pilha));
p->cont = 0;
return p;
}

void cadastrar(){

if(p->cont==max){
printf("Capacidade da pilha esgotada");
exit(1);
}
printf("\n\tDIGITE NOME: ");
scanf("%s",&p->nome);
printf("\n\tDIGITE ID: ");
scanf("%d",&p->id);
main();
}

void imprimir(){
int i;

for(i=p->cont-1;i>=0;i--);
printf("\n\n\t",p->vet[i]);
}

int main(){
int op;

printf("\n\t1- CADASTRAR.");
printf("\n\t2- MOSTRAR.");
printf("\n\t3- SAIR.");
printf("\n\n\tOPCAO: ");
scanf("%d",&op);
switch(op){
case 1: cadastrar(); break;
case 2: imprimir(); break;
case 3: exit(1);
default: printf("\n\n\tOPCAO INVALIDA!!!\n\n\n");
}
system("pause");
return 0;
}

Postado

Não entendo muito desses ponteiros, mas que eu sabia você não pode simplesmente apontar assim, você precisa mostrar um igual ele, tipo assim:


Pilha pilha2;
pilha* p;

ai no main coloca assim:


int main(int argc, char *argv[]){
int op;
p = &pilha2;

E tipo cara, não sei se ta pronto ainda. Mas tem muitas coisas sem sentidos ai. Você quer adicionar cadastros certos? Então pqe você só tem 1 pilha? Você só vai poder armazenar 1 cadastro e para que serve esse vet?

Você é obrigado a criar ponteiros?

Arquivado

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

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!