Para sair pressione a letra Q

main.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX 100

char *p[MAX];
char *qretrieve(void);

int spos = 0;
int rpos = 0;

void enter(void);
void qstore(char *q);
void review(void);
void delete(void);

void main(void) {
    char s[80];
    register int t;
    for(t=0; t<MAX; ++t) {
        p[t] = NULL;
    }
    for(;;) {
        printf("Inserir, Listar, Remover, Sair: ");
        gets(s);
        *s = toupper(*s);
        switch(*s) {
            case 'E':
                enter();
                break;
            case 'L':
            	review();
            	break;
            case 'R':
            	delete();
            	break;
            case 'Q':
            	exit(0);
        }
    }
}

void enter(void) {
    char s[256], *p;
    do {
        printf("Insira o evento %d: ", spos+1);
        gets(s);
        if(*s==p) {
            break; //Sem entrada
        }
        p = malloc(strlen(s)+1);
        if(!p) {
            printf("Sem memória!\n");
            return;
        }
        strcpy(p, s);
        if(*s) {
            qstore(p);
        }
    } while(*s);
}

void review(void) {
    register int t;
    for(t=rpos; t<spos; ++t) {
        printf("%d. %s\n", t+1, p[t]);
    }
}

void delete(void) {
    char *p;
    if((p=qretrieve())==NULL) {
        return;
    }
    printf("%s\n", p);
}
//Armazena um evento
void qstore(char *q) {
    if(spos==MAX) {
        printf("Lista cheia\n");
        return;
    }
    p[spos] = q;
    spos++;
}
//Recupera um evento
char *qretrieve(void) {
    if(rpos==spos) {
        printf("Sem eventos.\n");
        return NULL;
    }
    rpos++;
    return p[rpos-1];
}

Comentários