根据提示更新用户输入 C

Updating user inputs based on prompts C

下面的代码读取用户的输入,如果用户给出的 input 介于 1 和 9 playerselect 数字 k 更新为 1 或 2。如果 input 超出范围,则 input 被重新提示给用户。但是,在 2 提示 k 值更新后存在问题。而不是导致 Player 1 input 两次的代码应该是 Player 1 input 然后是 Player 2 input.

int main(void)
{
    char playerSelect[][2] = {"1", "2"};

    int k=0;

    for(int i=1; i <= 18; i++){
        printf("\nPlayer %s input:", playerSelect[k]);
        scanf("%d",&input);
        if ((i % 2 == 0) && (1<= input <= 9)){k = 0;}
        else if ((i % 2 == 1) && (1<= input <= 9)){k = 1;}
        else {printf("Input out of bounds please input again");}
    }
    return 0;
}

输出:

Player 1 input:10
Input out of bounds please input again
Player 1 input:2

Player 1 input:2

Player 2 input:4

想要的输出

Player 1 input:10
Input out of bounds please input again
Player 1 input:2

Player 2 input:2

Player 1 input:4

好吧,每次给出 越界 输入时,您必须循环直到获得正确的输入,然后更新 k 值。

#include <stdio.h>

int main(void)
{
  int input = 0, k = 0;
  char playerSelect[][2] = {"1", "2"};

  for (int i = 1; i <= 18; i++)
  {
    printf("\nPlayer %s input: ", playerSelect[k]);

    scanf("%d", &input);

    while (input > 9 || input < 1)
    {
      puts("Input out of bounds please input again");
      
      printf("\nPlayer %s input: ", playerSelect[k]);

      scanf("%d", &input);
    }

    k = ((i % 2 == 0) ? 0 : 1);
  }
  return 0;
}