几个小知识点:
字符串数组作为参数。
fileno(stdout)的使用。
标准输出是否被重定向了 isatty( fileno(stdout) );
回车符的过滤方法。
#include <stdio.h>
#include <stdlib.h>
char *menu[] = {
"a add",
"b back",
"c cancel",
"q quit",
NULL
};
//函数参数类型
static int getChoice(char* str, char* menu[])
{
int choose;
int c;
char** p = NULL;
int select = 0;
do{
select = 0;
printf("%s\n", str);
p = menu;
while(*p)
{
printf("%s\n", *p);
p++;
}
//过滤掉输入的回车符
do{
choose = getchar();
}while(choose == '\n');
p = menu;
while(*p)
{
if(*p[0] == choose)
{
select = 1;
break;
}
p++;
}
if(!select)
{
printf("incorrect input\n");
}
}while(!select);
return choose;
}
int main()
{
int choose;
do{
choose = getChoice("Please input command", menu);
printf("you have choose %c\n", choose);
}while(choose != 'q');
exit(0);
}