功能自动循环?

时间:2018-09-09 00:07:11

标签: c++

好,因此该功能应该从用户那里获取结果,然后为他们提供一个选项,以输入更多结果或完成后返回主菜单main()。

一切正常。唯一的问题是在切换之前的最后一个scanf语句。

与其等待userChoice中的用户输入,不如自动重新启动该功能。它似乎只应该在userChoice是'a'或'A'的情况下这样做,但是它似乎完全忽略了scanf语句和开关。我究竟做错了什么?向下滚动以查看im所指的行。

void inputResults(int gameNumber, int i, int j)
{


    int Results[ROWS][COLS];
        char userChoice = ' ';
        if (j >= COLS)
        {
            j = 0;
            i = i + 1;
        }
        if (gameNumber > ROWS)
        {
            printf("\nJk, Max number of games reached\n");
            main();
        }

        gameNumber = gameNumber + 1;
        printf("\nHow many points did the home team score in game %d?\n", gameNumber);
        scanf_s("%d", &Results[i][j]);
        j = j + 1;
        printf("\nHow many points did the opponents score in game %d?\n", gameNumber);
        scanf_s("%d", &Results[i][j]);
        printf("\nHome: %d  Opponents: %d\n", Results[i][j-1], Results[i][j]);
        printf("\nA) Enter results for game %d\nB) Main menu  \n", (gameNumber + 1));

*************************PROBLEM***********************************

        scanf_s("%c", &userChoice); /*it ignores THIS it just loops the 
                                    function after it prints the above*/

        switch (userChoice) //it doesnt even get to this.
        {
        case 'A':
            inputResults(gameNumber, i, j);
        case 'a':
            inputResults(gameNumber, i, j);
        case 'b':
            main();
        case 'B':
            main();
        default:
            printf("\nThats still not  a valid choice dude\n");
        }

}

如果您想知道,传递给gameNumber,i和j的值全为0。它们是通过主要功能传递的

1 个答案:

答案 0 :(得分:0)

当您使用tasks: - set_fact: bogus: >- {%- for port_num, dicts in (my_dict | dict2items | groupby('value.redis.port')) if (dicts|length) > 1 -%} {{ dicts | map(attribute='key') | list }} {%- endfor -%} - debug: var=item when: '{{ (bogus | length) > 0 }}' with_items: '{{ bogus }}' 阅读单个字符时

scanf_s

,然后输入例如。字母“ A”并按Enter,“ A”以char ch; scanf_s("%c", &ch, 1); 结尾,但按Enter的'\ n'仍保留在stdin中。在下一次调用ch时,将读取'\ n'并将其存储在scanf_s()中,而您没有机会进行任何输入。

使用

ch

相反,它将读取并丢弃仍在scanf_s("%c[^\n]", &ch, 1); 中的所有多余字符,直到下一个换行符。