我正在尝试在C中实现一个命令行菜单,这样当用户输入一个字符时,它会立即处理该字符并执行特定的功能。问题是,每当我尝试这样做,以便在处理完每个输入后,菜单再次显示并准备好进行新输入,程序将不断读取输入,除非我退出程序,否则永远不会处理它。
这是一次有效的代码:
char command;
command = getchar();
switch(command){
case 'c':
//create a new hash table;
break;
case 'l':
//look up a word;
break;
case 'f':
//read a file
break;
case 'p':
//print the table;
break;
case 'r':
//Remove a word
break;
case 'q':
exit(0);
break;
}
但是,如果我尝试将其置于无限循环中以继续运行,就像我说的那样,它将永远不会处理输入,直到我退出程序。
答案 0 :(得分:0)
此代码应该适合您 - 它适用于我。请注意int
用于变量command
。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
int command;
while ((command = getchar()) != EOF)
{
switch(command)
{
case 'c':
printf("Create a new hash table\n");
break;
case 'l':
printf("Look up a word\n");
break;
case 'f':
printf("Read a file\n");
break;
case 'p':
printf("Print the table\n");
break;
case 'r':
printf("Remove a word\n");
break;
case 'q':
printf("Quit\n");
exit(0);
break;
default:
printf("Unexpected input %d (0x%.2X) ('%c')\n",
command, command, isgraph(command) ? command : '.');
break;
}
}
return 0;
}