Skip to content

Instantly share code, notes, and snippets.

@blabos-zz
Created September 30, 2010 04:20
Show Gist options
  • Save blabos-zz/604011 to your computer and use it in GitHub Desktop.
Save blabos-zz/604011 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SAIR 42
#define FOO 1
#define BAR 2
#define MAX_BUFFER 1024
void print_menu();
int get_option();
void do_foo();
void do_bar();
void do_invalid();
void print_menu() {
printf("\n\nDigite sua opção:\n");
printf(" 1 - Fazer Foo\n");
printf(" 2 - Fazer Bar\n");
printf(" 42 - Sair\n");
}
int get_option() {
char buffer[MAX_BUFFER];
// Mostra o menu. Poderia ser fora daqui.
// Mas essa função não chama ninguém e retorna imediatamente.
print_menu();
// Lê do teclado de forma segura. Para saber mais: man fgets
fgets(buffer, MAX_BUFFER, stdin);
// Remove o \n do final. Exercício: Como? Por quê?
buffer[strlen(buffer) - 1] = '\0';
// Retorna a opção numérica digitada
return atoi(buffer);
}
void do_foo() {
printf("Executando comando foo\n");
}
void do_bar() {
printf("Executando comando bar\n");
}
void do_invalid() {
printf("Comando inválido\n");
}
int main(int argc, char** argv) {
int opt;
// Enquanto o usuário não mandar sair,
// Mostre o menu
// Espere a entrada
// Tente executar o comando
while ((opt = get_option()) != SAIR) {
switch (opt) {
case FOO:
do_foo();
break;
case BAR:
do_bar();
break;
default:
do_invalid();
}
}
return EXIT_SUCCESS;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment