首页 > 解决方案 > (C++) 输入字符导致无限循环

问题描述

#include <iostream>

int idarr[200];
char namearr[200];
int moneyarr[200];
int j=0;

int state(void)
{
    int n;
    std::cout << "----Menu---- \n" << "1. create \n" << "2. deposit \n" << "3. withdraw \n" << "4. print all accounts \n" << "5. end the program" << std::endl;
    std::cout << "choose : ";
    std::cin >> n;
    return n;
}

void create(void)
{
    int id, money;
    char name;
    std::cout << "[create new account]" << std::endl;
    std::cout << "ID : ";
    std::cin >> id;
    std::cout << "name : ";
    std::cin >> name;
    std::cout << "first deposit money : ";
    std::cin >> money;

    idarr[j] = id;
    namearr[j] = name;
    moneyarr[j] = money;
    j++;
}

int main(void)
{
    int num = 0;
    for (int i = 0; ; i++)
    {
        num = state();

        if (num == 1)
            create();
        if (num == 2)
            in();
        if (num == 3)
            out();
        if (num == 4)
            printall();
        if (num == 5)
            return 0;
    }
}

我编写了有关创建用户帐户的代码并将其存储在数组中。type 1:创建账户 type 2:存款 type 3:取款 type 4:打印存储在数组中的所有账户 type 5:结束程序

但是,当我输入 1 并尝试输入类型为字符的“名称”时,它会返回函数“状态()”的无限循环。我的代码有什么问题?仅当我选择 1 并键入名称时才会发生。在其他情况下,例如 2~5,代码可以正常工作。谢谢您的回答。

标签: c++infinite-loop

解决方案


推荐阅读