c - 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");
}
}
}
解决方案
您需要将指针传递给scanf
. 而不是这个:
scanf(" %c",checks_player);
用这个:
scanf(" %c", &checks_player);
推荐阅读
- typescript - 访问 xState 类型时,Typescript is not assignable 错误
- docker - 如何在另一个目录中构建 docker 映像?
- python-3.x - 如何判断图像是不是东西?
- json - Dynamically Encode json keys in go
- c++ - 如果使用 memory_order_acquire 存储会发生什么
- python - TensorFlow 2.0 - @tf.function 和 tf.unstack TypeError
- ios - 如何使用 Alamofire Swift 读取 Content-Length HTTPResponse
- visual-studio - Qt 应用程序在发布时挂起,在调试中找不到 vcruntime140.dll,但我的项目使用的是 VS2017
- testing - 运行 npm test 时,是否需要在 test 命令的开头放置“CI=true”?
- c# - 升级到 MSAL 缺少 JWT 令牌中的 AUD