#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
//定义menu
char *menu[]=
{
"a ----",
"b ----",
"c ----",
NULL,
};
int getchoice(char *greet,char *choices[],FILE *in,FILE *out);
int main()
{
int choice=0;
//获取tty,该设备始终指向当前终端
FILE *input=fopen("/dev/tty","r");
FILE *output=fopen("/dev/tty","w");
//判断用户是否重定向标准输出
if(!isatty(fileno(stdout)))
{
fprintf(stderr,"you are not a terminal!\n");
}
while(1)
{
choice = getchoice("please select an option",menu,input,output);
printf("you have chosen: %c\n",choice);
// handle choice
if(choice == 'a')
{
printf("111 \n");
}
else if(choice == 'b')
{
printf("222 \n");
}
else if(choice == 'c')
{
printf("333 \n");
}
}
// do
// {
// choice = getchoice("please select an action",menu,input,output);
// printf("you have chosen: %c\n",choice);
// if(choice == 'a')
// {
// //printf("111 \n");
// }
// }while(choice != 'q');
exit(0);
}
int getchoice(char *greet,char *choices[],FILE *in,FILE *out)
{
int chosen = 0;
int selected;
char **option;
do
{
printf("\n------------------------------\n");
printf("choice: %s\n",greet);
option = choices;
while(*option)
{
fprintf(out,"%s\n",*option);
option++;
}
printf("------------------------------\n\n");
do
{
selected = fgetc(in);
option = choices;
}while(selected == '\n');
while(*option)
{
if(selected == *option[0])
{
chosen = 1;
break;
}
option++;
}
if(!chosen)
{
fprintf(out,"incorrect choice,select again\n--------------------\n");
}
}while(!chosen);
return selected;
}