1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| #include <stdio.h> #include <string.h> #include <stdlib.h>
typedef enum CmdType { CMD1, CMD2, CMD3, CMD4, CMD5, QUIT }CmdType;
typedef struct CmdList { CmdType type; unsigned char info[50]; }CmdList;
CmdList g_cmd_list[] = { {CMD1, "run cmd1"}, {CMD2, "run cmd2"}, {CMD3, "run cmd3"}, {CMD4, "run cmd4"}, {CMD5, "run cmd5"}, {QUIT, "to quit"}, };
void printf_cmd_str() { int size = sizeof(g_cmd_list) / sizeof(g_cmd_list[0]); printf("support cmd:\n"); for (int i = 0; i < size; i++) { printf(" .%d-->%s\n", i, g_cmd_list[i].info); } printf("eg. you can input \".0\" to run this cmd.\n"); }
int main(int argc, char *argv[]) { int cmd_size = sizeof(g_cmd_list) / sizeof(g_cmd_list[0]); while (1) { printf_cmd_str(); char data[20] = {0}; if (fgets(data, 20, stdin) < 0) { printf("fgets error\n"); continue; } if (data[0] == '.') { int id = atoi(&data[1]); if (id >= cmd_size || id < 0) { printf("input err\n"); continue; } int cmd = g_cmd_list[id].type; if (cmd == CMD1) { printf("run cmd1\n"); } else if (cmd == CMD2) { printf("run cmd2\n"); } else if (cmd == CMD3) { printf("run cmd3\n"); } else if (cmd == CMD4) { printf("run cmd4\n"); } else if (cmd == CMD5) { printf("run cmd5\n"); } else if (cmd == QUIT) { printf("to quit\n"); break; } else { printf("this cmd is not supported\n"); } } else { printf("input invalid\n"); } }
return 0; }
|