代码给我一个无限循环

标签 c

#include <stdio.h>
void load_menu(void);

int main(void)
{
    load_menu();
    return 0;
}

void load_menu(void)
{
int choice;
int loopagain;

do
{
    printf("Menu \n\n");
    printf("Please enter your choice: \n");
    printf("1. \n");
    printf("2.\n");
    printf("3.\n");
    printf("4. Exit\n");
    if (scanf("%d",&choice)==1)
    {

        switch(choice)
        {
            case 1:
                    break;
            case 2:
                    break;
            case 3:
                    break;
            case 4: printf("Quitting program!\n");
                    break;
            default: printf("Invalid choice! Please try again\n");
                    printf("\n");
                break;
        }
    }

    else
    {
        printf("Characters are invalid, please enter a number: \n ");
        if (scanf("%d",&loopagain)==1)
            load_menu();
    }

}while((choice !=4));
}

为什么当我输入一个字符时仍然给我一个无限循环?这是一个菜单(仍然需要填写 case 语句),但我正在处理 if 语句输入的字符,但它似乎仍然不起作用。谢谢

最佳答案

如果字符输入无效,新调用的 load_menu() 中的 loopagain 将与其调用者中的相同。根本不要递归:

else
{
    printf("Characters are invalid, please enter a number: \n ");
    choice = 0; // Unused, so continue the loop
}

关于代码给我一个无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14047654/

相关文章:

同步闪存驱动器的 C 代码

c - 简单的 Objective-C(适用于 C)控制台程序将华氏度转换为摄氏度,反之亦然

c - 在windows下查找程序在c中使用的总内存

c - 多字符字符常量在 C 中有效吗?也许在 MS VC 中?

c - Linux socket-他们断开了连接还是我们断开了连接?

c - 应用 MVP 变换不会渲染任何 OpenGL

c - union 和位域——它们如何工作?

c++ - 测试 C/C++ 源代码

c - 操作系统 : CGGlyph to UniChar

c - 拒绝指针的数组大小的宏