C中的命令行菜单

时间:2013-05-11 17:43:19

标签: c

我正在尝试在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;
    }

但是,如果我尝试将其置于无限循环中以继续运行,就像我说的那样,它将永远不会处理输入,直到我退出程序。

1 个答案:

答案 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;
}