Ir ao conteúdo
  • Cadastre-se

Samaroni Ramos Campelim

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

1
  1. Boa tarde, estou implementado este programa em que leio 5 endereços do teclado e imprimo a pilha na tela e em um arquivo. Até aqui tranquilo o problema é que o conteúdo do arquivo não apaga quando adiciono novos endereços, ou seja ele imprime os novos endereços no arquivo mantendo junto com os já salvos, alguém tem uma ideia de como resolver? OBS: já utilizei ''w'' no fopen para abrir o arquivo e dai ele imprime somente a primeira string no arquivo. #include <stdio.h> #include <string.h> #define MAX 5 #define TAM 100 char pilha[MAX][TAM] = {0}; //pilha de 5 strings de 100 caracteres cada. Ou seja... podemos empilhar 5 objetos(frases) de até 100 letras cada. Isso contando com que MAX tenha um valor de 5 claro int top = 0; //Empilha um elemento até que a pilha esteja cheia. Se estiver cheia mostra um aviso"Pilha Cheia!" void empilhar ( char endereco[TAM] ) { if ( top < MAX ) { strcpy ( pilha[top],endereco); top++; }else{ printf("Erro: Pilha Cheia! Tentou empilhar \"%s\" na posicao %d que nao se permite.\n\n",endereco, MAX+1); } } //Imprime a pilha de abaixo para cima si a pilha não estiver vazia. Caso contrario, se a pilha estiver vazia, mostra "Pilha Vazia" void imprimirPilha() { int i; FILE *pArq; if(top != 0){ printf("Conteudo da pilha:\n"); for ( i = top-1; i >= 0 ; i-- ) { printf ( "\"%s\"\n", pilha[i] ); if((pArq = fopen("Historico.txt","a")) == NULL) { printf("Erro ao abrir arquivo!!!\n"); exit(1); } fprintf(pArq,"%s\n",pilha[i]); fclose(pArq); } } else{ printf("Conteudo da pilha:\n"); printf("Vazia!\n\n"); } } //Desempilha um elemento. Caso não tenha nada mais que desempilhar mostra um aviso void desempilhar() { int i; if ( top > 0 ) { printf("Desempilhar posicao %d da pilha. Continha \"%s\"\n\n", top, pilha[top-1] ); for ( i = 0; i < TAM ; i++ ) { pilha[top-1][i] = 0; } top--; }else{ printf("Erro: Tentando desempilhar pilha vazia\n\n"); } } int main() { char endereco[100]; int i; for(i=0;i<MAX;i++){ printf("Informe o endereco[%d]: ",i); gets(endereco); empilhar (endereco); } imprimirPilha(); desempilhar(); imprimirPilha(); }
  2. @vangodp Muito obrigado, estava tentando adaptar um programa de int e acabei me atrapalhando.
  3. Boa noite estou com este trabalho sobre pilhas em C, em que tenho que ler strings a partir do teclado e empilhar, mostrar na tela e também desempilhar. Não estou conseguindo exibir todas as strings digitadas o programa esta imprimindo duas vezes a ultima string digitada somente, alguém pode me dar uma luz? #include <stdio.h> #include <stdlib.h> #define MAX 2 // Variaveis declaradas aqui são visiveis por todas as funções int stack[MAX]; int top = 0; int i; struct site{ char endereco[100]; }; //Insere um item na pilha void push (endereco) { if (top >= MAX) { printf("Pilha cheia.\n"); } for(i=0;i<MAX;i++){ printf("Informe o endereco: "); gets(endereco); stack[top] = endereco; top++; } } //Remove um item da pilha (o ultimo que entrou) int pop (int *dado) { if (top <= 0) { printf("Pilha vazia.\n"); return -1; } top --; *dado = stack[top]; return 0; } //Mostra o conteúdo da pilha void showStack (endereco) { if (top < 0){ printf("Pilha vazia.\n"); } printf("Pilha:\n"); for(i=0;i<top;i++){ printf("%s",stack); } printf("\n\n"); } int main(){ struct site site1; push(site1.endereco); showStack(site1.endereco); return 0; }

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!