C程序,切换菜单无限循环

时间:2014-11-15 13:36:42

标签: c loops switch-statement infinite-loop

好吧它现在循环正确但是当你给它一个输入时,例如' 2'它只是默认情况。

 print_Menu() {
        while ( 1 )
    {
        printf("=============================================\n");
        printf("MENU\n");
        printf("=============================================\n");
        printf("1. Do stuff\n2. Do more stuff\n3. Do even more stuff\n4. Quit\n");
        printf("Choose an option: ");

        scanf(" %s*", &selection);


        switch (selection) {
            case 1:
                /*do your thing for option 1*/
                printf("thing 1\n");
                break;
            case 2:
                /*do your thing for option 2*/
                printf("thing 2\n");
                break;
            case 3:
                /*do your thing for option 3*/
                printf("thing 3\n");
                break;
            case 4:
                /*do your thing for option 3*/
                printf("quiting app\n");
                exit(0);
                break;
            default:
                printf(" Invalid selection\n");
               // print_Menu();
                break;
        }
      } 

2 个答案:

答案 0 :(得分:3)

添加

scanf("%*s");
default情况下

清除输入缓冲区中的无效字符。*告诉scanf扫描字符串然后丢弃它。

scanf无法获得整数,并且当您输入除整数之外的任何其他内容时返回0。 scanf不会消耗此数据,因此保留在stdin中。当第二次调用scanf时,它会看到您之前再次键入的字符无法读取整数。这将导致无限循环

答案 1 :(得分:0)

if(1!=scanf("%d", &selection)){
    while(getchar() != '\n');
    selection = -1;
}