[color=#007020]#include <string.h>
#include <stdio.h>
#include <stdint.h>
[/color]
[color=#007020][b]typedef[/b][/color] [color=#007020][b]enum[/b][/color]
{
NONE, ADD, SUB, DELETE, PRINT
} cmd_type;
[color=#007020][b]typedef[/b][/color] [color=#007020][b]struct[/b][/color]
{
[color=#007020][b]const[/b][/color] [color=#902000]char[/color] [color=#666666]*[/color]cmd_str;
cmd_type cmd;
} menu_type;
[color=#007020][b]static[/b][/color] cmd_type [color=#06287e]get_command[/color]([color=#007020][b]const[/b][/color] [color=#902000]char[/color] [color=#666666]*[/color]input)
{
menu_type entries[] [color=#666666]=[/color]
{
{[color=#4070a0]"add"[/color], ADD},
{[color=#4070a0]"sub"[/color], SUB},
{[color=#4070a0]"delete"[/color], DELETE},
{[color=#4070a0]"print"[/color], PRINT}
};
[color=#902000]unsigned[/color] [color=#902000]int[/color] i;
[color=#007020][b]for[/b][/color] (i [color=#666666]=[/color] [color=#40a070]0[/color]; i [color=#666666]<[/color] [color=#007020][b]sizeof[/b][/color](entries)[color=#666666]/[/color][color=#007020][b]sizeof[/b][/color](entries[[color=#40a070]0[/color]]); i[color=#666666]++[/color])
{
[color=#007020][b]if[/b][/color] (stricmp(input, entries[i].cmd_str) [color=#666666]==[/color] [color=#40a070]0[/color]) [color=#007020][b]return[/b][/color] entries[i].cmd;
}
[color=#007020][b]return[/b][/color] NONE;
}
[color=#007020][b]static[/b][/color] [color=#902000]void[/color] [color=#06287e]menu_executer[/color]([color=#007020][b]const[/b][/color] [color=#902000]char[/color] [color=#666666]*[/color]input)
{
cmd_type cmd [color=#666666]=[/color] get_command(input);
[color=#007020][b]switch[/b][/color] (cmd)
{
[color=#007020][b]case[/b][/color] ADD: puts([color=#4070a0]"adding"[/color]);
[color=#007020][b]break[/b][/color];
[color=#007020][b]case[/b][/color] SUB: puts([color=#4070a0]"sub command"[/color]);
[color=#007020][b]break[/b][/color];
[color=#007020][b]case[/b][/color] PRINT: puts([color=#4070a0]"print cmd"[/color]);
[color=#007020][b]break[/b][/color];
[color=#007020][b]case[/b][/color] DELETE: puts([color=#4070a0]"del cmd"[/color]);
[color=#007020][b]break[/b][/color];
[color=#007020][b]case[/b][/color] NONE: puts([color=#4070a0]"unknown command :("[/color]);
[color=#007020][b]break[/b][/color];
[color=#002070][b]default:[/b][/color] puts([color=#4070a0]"default action"[/color]);
}
}
[color=#902000]int[/color] [color=#06287e]main[/color]([color=#902000]void[/color])
{
[color=#60a0b0][i]/* while menu loop bla */[/i][/color]
menu_executer([color=#4070a0]"aDD"[/color]);
menu_executer([color=#4070a0]"Print"[/color]);
menu_executer([color=#4070a0]"cdw"[/color]);
[color=#007020][b]return[/b][/color] [color=#40a070]0[/color];
}