Paloma 0 Denunciar post Postado Junho 3, 2006 Alguém pode me ajudar? Tá dando um erro na função listar ERRO: struct Sapato' has no member named 'topo' Pelo que entendi, o erro indica que o ponteiro topo não faz parte da struct sapato, mas eu declarei topo como sendo um ponteiro para sapato, não está correto? //DIRETIVAS #include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <conio.h>#define MAX 21//ESTRUTURAtypedef struct Sapato{ char marca[MAX]; char modelo[MAX]; char cor[MAX]; int num; struct Sapato *prox; }; //VARIÁVEIS GLOBAISchar marca[MAX], modelo[MAX], cor[MAX];int num;Sapato *topo;//ponteiro para o topo da pilha//FUNÇÃO AUXILIAR LER DADOS void dados_sapato(){ system("cls"); printf ("\nEntre com a marca do sapato: "); fflush (stdin); fgets (marca, MAX, stdin); printf ("Entre com o modelo do sapato: "); fflush (stdin); fgets (modelo, MAX, stdin); printf ("Entre com a cor do sapato: "); fflush (stdin); fgets (cor, MAX, stdin); printf ("Entre com o numero do sapato: "); fflush (stdin); scanf ("%d", &num);}//FUNÇÃO INSERIRvoid push_sapato(){ dados_sapato();//chamando a função Sapato *pnovo=(Sapato*)malloc(sizeof(Sapato));//alocando memoria para os novos elementos strcpy(pnovo->marca,marca); strcpy(pnovo->modelo,modelo); strcpy(pnovo->cor,cor); pnovo->num=num; pnovo->prox=NULL; if(topo==NULL)//se a pilha estiver vazia topo=pnovo; //topo recebe o novo elemento else{ pnovo->prox=topo; topo=pnovo; }}//FUNÇÃO EXCLUIRvoid pop_sapato(){ Sapato *aux; if(topo==NULL){ printf ("\n\nErro, pilha de sapatos vazia.\n\n"); return; } else{ aux=topo; topo=topo->prox; free(aux); }}//FUNÇÃO LISTARvoid listar_sapatos(){ Sapato *aux; aux=topo; while(aux!=NULL){ printf ("\t\t\tDADOS SAPATO\n\n"); printf ("Marca: %s", aux->marca); printf ("Modelo: %s", aux->modelo); printf ("Cor: %s", aux->cor); printf ("Numero: %d", aux->num); aux=aux->topo; } }//FUNÇÃO PRINCIPALint main(){ char op; topo=NULL;//incializando a pilha como vazia do{ system("cls"); printf ("\t\t\tFABRICA DE SAPATO PALOMA & CIA"); printf ("\n\n(E)mpilhar Sapato\n"); printf ("(L)istar Estoque Sapatos\n"); printf ("(D)esempilhar Sapato\n"); printf ("(S)air do Programa\n\n"); printf ("Digite a opcao: "); op=toupper(getche()); switch(op){ case'E': push_sapato(); break; case'L': listar_sapatos(); break; case'D': pop_sapato(); break; case'S': exit(0); default: printf ("\n\nOpcao invalida, digite novamente.\n\n"); } system("PAUSE"); }while (op!='S'); return (0);} Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Junho 6, 2006 { Sapato *aux; aux=topo; while(aux!=NULL){ printf ("\t\t\tDADOS SAPATO\n\n"); printf ("Marca: %s", aux->marca); printf ("Modelo: %s", aux->modelo); printf ("Cor: %s", aux->cor); printf ("Numero: %d", aux->num); aux=aux->topo; }}Não está aqui o problema?aux=aux->topo; Mas a struct Sapato não tem nenhum membro chamado 'topo' Compartilhar este post Link para o post Compartilhar em outros sites
Paloma 0 Denunciar post Postado Junho 6, 2006 Ok, valeu http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites