Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序不';t使用scanf()等待用户输入_C_Scanf_Tic Tac Toe - Fatal编程技术网

C程序不';t使用scanf()等待用户输入

C程序不';t使用scanf()等待用户输入,c,scanf,tic-tac-toe,C,Scanf,Tic Tac Toe,我是C新手,这是我第一个C项目的技巧。为此,我为用户设置了一个简单的选择X或O的过程。但出于某种原因,它似乎不起作用。在这里,它继续执行if语句并进入无限循环,因为它没有等待用户输入 我曾经在类似的论坛上讨论过这个问题,但我无法找到解决我问题的答案。此外,关于代码的反馈非常感谢,因为我确实希望改进我的代码 #include <stdio.h> #include <stdlib.h> void main() { char checks_player; in

我是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");
        }



    }
}
#包括
#包括
void main()
{
char-u播放器;
int是_输入_有效=0;
while(输入是否有效==0)
{
printf(“您想要选择什么?(X/O)”);
scanf(“%c”,检查\u播放器);
如果(检查\u player=='x')
{
检查_player='X';
_输入_有效=1;
}
else if(检查\u player=='o')
{
检查_player='O';
_输入_有效=1;
}
else if((检查_player='O')| |(检查_player='X'))
{
_输入_有效=1;
}
其他的
{
printf(“无效输入!!\n请重试。\n\n”);
}
}
}

您需要将指针传递到
scanf
。与此相反:

        scanf(" %c",checks_player);
使用以下命令:

        scanf(" %c", &checks_player);

检查编译器警告是一个好主意,它可以准确地告诉您问题所在。令人惊讶的是,编译器没有警告缺少指针。因为您需要启用警告谢谢您的快速回答。我为犯了这样一个基本的错误而感到羞耻。