【问题标题】:C program doesn't wait for user input with scanf()C 程序不使用 scanf() 等待用户输入
【发布时间】:2021-04-22 18:06:51
【问题描述】:

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



    }
}

【问题讨论】:

  • 检查编译器警告是个好主意,可以准确地告诉你问题
  • 令人惊讶的是,编译器没有警告指针缺失。
  • 因为你需要启用警告

标签: c scanf tic-tac-toe


【解决方案1】:

您需要传递一个指向scanf 的指针。而不是这个:

        scanf(" %c",checks_player);

使用这个:

        scanf(" %c", &checks_player);

【讨论】:

  • 感谢您的快速答复。我为犯这种基本错误感到羞耻。
猜你喜欢
  • 2012-01-17
  • 2022-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多