首页 > 解决方案 > C 程序不等待用户使用 scanf() 输入

问题描述

我是 C 新手,这是我第一个 C 项目的井字游戏。为此,我为用户设置了一个简单的过程来选择 X 或 O。但它似乎不起作用。在这里,它继续执行 if 语句并进入无限循环,因为它没有等待用户输入。

关于这个确切的问题,我已经浏览过类似的论坛,但我无法得到解决我问题的答案。此外,非常感谢有关代码的反馈,因为我确实想改进我的代码。

#include <stdio.h>
#include <stdlib.h>

void main()
{
    char checks_player;
    int is_input_valid = 0;

    while(is_input_valid == 0)
    {
        printf("What do you want to choose? (X/O) ");
        scanf(" %c",checks_player);
        if(checks_player == 'x')
        {
            checks_player = 'X';
            is_input_valid = 1;
        }
        else if(checks_player == 'o')
        {
            checks_player = 'O';
            is_input_valid=1;
        }
        else if((checks_player == 'O')|| (checks_player == 'X'))
        {
            is_input_valid = 1;
        }
        else
        {
            printf("Invalid Input!!\nTry Again.\n\n");
        }



    }
}

标签: cscanftic-tac-toe

解决方案


您需要将指针传递给scanf. 而不是这个:

        scanf(" %c",checks_player);

用这个:

        scanf(" %c", &checks_player);

推荐阅读