好,因此该功能应该从用户那里获取结果,然后为他们提供一个选项,以输入更多结果或完成后返回主菜单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。它们是通过主要功能传递的
答案 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);
中的所有多余字符,直到下一个换行符。