Galera o que ta ocorrendo, não estou conseguindo carregar o caracter na pilha eu consigo e ja fiz alguns programas com inteiros com strings também porém com caracter de uma string não consigo passar EX: SANTOS eu tenho que passar somente o S depois o A,N,T,O,S pra depois eu desempilhar e ter o inverso porém não estau conseguindo transportas. La no código eu vou comenta a parte que esta dando trabalho [noparse][code][/code][/noparse]
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h> // Definicao da estrutura da pilhastruct pilha{char dados[200];struct pilha *prox;}; // Prototipo das funcoeschar empilha(struct pilha **p); struct pilha *desempilha(struct pilha **p); int main(){ // Topo da pilhastruct pilha *p = NULL; // Ponteiro para armazenar um elemento desempilhadostruct pilha *desempilhado = NULL; // Variaveis auxiliaresint i, n; // Semeia o gerador de numeros aleatoriossrand(time(NULL)); printf("Empilhando...\n");char inteiro1[200];char auxint[200];int a2=0;int z=0; empilha(&p);// Desempilha e imprime todos os valores da pilhawhile ((desempilhado = desempilha(&p)) != NULL){printf("Desempilhado: %s\n", desempilhado->dados); } } /* * Funcao responsavel por empilhar um valor na pilha. * e o valor a ser empilhado. */ char empilha(struct pilha **p){ char inteiro1[200];char auxint[200];int a2=0;int z=0;int i=0;// Ponteiro para o novo elemento a ser alocadostruct pilha *novo = NULL; // Aloca o novo elementonovo = (struct pilha *) malloc(sizeof(struct pilha)); // Verifica se a alocacao teve exitoif (novo != NULL){ printf("\nInsira um valor carai\n"); gets(inteiro1); fflush(stdin); a2=strlen(inteiro1); for(i=0; i<a2; i++) { //strcpy(aux->nome,n); //strcpy(auxint[i],inteiro1[i]); auxint=inteiro1[i]; //strcpy(novo->dados,auxint); strcpy(novo->dados,inteiro1); //novo->dados = inteiro1; printf("Empilhado: %c\n", inteiro1[i]);fflush(stdin); } //galera essa parte de cima nao consigo colocar so o caracter da palavra que digitei para entrar na pilha//so consigo se eu joga a string inteiro se observar tentei varios modos não sei se é falta de lógica minha mesmo ou comando errado //mesmo // Insere o valor no novo elemento//strcpy(aux->nome,n);// strcpy(novo->dados,inteiro1); // Verifica se a pilha esta vazia, se estiver vazia, o ponteiro// para o proximo elemento sera NULLif (*p == NULL){novo->prox = NULL;} else { // Caso contrario, o novo elemento assume o topo, e o proximo// elemento para a ser o antigo toponovo->prox = *p;} // O topo passa a ser o novo elemento*p = novo; } else {printf("Erro ao alocar memoria!\n");return 1;} return 0; } /* * Funcao responsavel por desempilhar um valor da pilha. Recebe como parametro * um ponteiro para um ponteiro para o primeiro elemento da pilha */struct pilha *desempilha(struct pilha **p){ // Variavel que armazenara o valor desempilhado temporariamentestruct pilha tmp; // Ponteiro auxiliarstruct pilha *aux = NULL; // Ponteiro para o elemento que sera desempilhadostruct pilha *del = NULL; // Se a pilha nao estiver vazia...if (*p != NULL){ // Aloca o elemento que recebera o valor a ser desempilhadoaux = (struct pilha *) malloc(sizeof(struct pilha)); // Obtem o valor do elemento desempilhadotmp = **p; // Armazena um ponteiro para o valor do elemento desempilhadoaux = &tmp; // Armazena o endereco do elemento a ser excluidodel = *p; // Altera o topo para o proximo elemento da pilha*p = (*p)->prox; // Exclui o elemento desempilhadofree(del); // Retorna o ponteiro para o valor desempilhadoreturn aux; } else {return NULL;}}