当前位置: 首页 > 知识库问答 >
问题:

如何在scanf()中使用不同的数据类型?

马渊
2023-03-14

我正在用C语言开发一种象棋游戏,只是为了练习。在游戏开始时,用户可以键入4样东西:

  • ROW

如何使用scanf期望2个整数或1个字符?


共有3个答案

汪信鸥
2023-03-14

这个只是使用scanf

#include <stdio.h>
int main()
{
        char c;
        int row, col;
        scanf("%c", &c);
        if (c == 'h')
                return 0;
        if (c == 'q')
                return 0;
        if (isdigit(c)) {
                row = c - '0';
                scanf("%d", &col);
                printf("row %d col %d", row, col);
        }
        return 0;
}
宋安晏
2023-03-14

最好不要使用scanf。它通常会造成比它解决的问题更多的麻烦。

一种可能的解决方案是使用fgets获取整行,然后使用strcmp查看用户是否键入“h”或“q”。如果没有,请使用sscanf获取行和列。

蔚琦
2023-03-14

看起来读一整行,然后决定其中包含的内容是最明智的。这不包括使用scanf,因为它会消耗stdin流中的内容。

试着这样做:

char input[128] = {0};
unsigned int row, col;
if(fgets(input, sizeof(input), stdin))
{
    if(input[0] == 'h' && input[1] == '\n' && input[2] == '\0')
    {
        // help
    }
    else if(input[0] == 'q' && input[1] == '\n' && input[2] == '\0')
    {
        // quit
    }
    else if((sscanf(input, "%u %u\n", &row, &col) == 2))
    {
        // row and column
    }
    else
    {
        // error
    }
}
 类似资料:
  • 我是java新手,我正在学习抽象课程,但我被困在了一个地方。 我想将不同的数据类型返回到,但我做不到。我确实在java中参考了抽象方法的不同返回类型,但没有提出这个问题,因为我在java方面的经验较少,因此我不明白该链接的solution.Please有人帮我解决这个问题。 密码 错误 测试.java:18: 错误: 联合不是抽象的, 不会覆盖抽象方法率对银行的兴趣() 类Union扩展Bank{

  • 问题内容: 在Java中的各个类之间共享数据的最佳方法是什么?我有一堆变量,它们由不同的类以不同的方式在不同的文件中使用。让我尝试说明问题的简化版本: 这是我之前的代码: 现在看起来像这样: 所以无论如何,我应该每次都传递x和y(其中x,y是存储在辅助类func中的变量)吗? 我的想法是要有一个特殊的容器类,其中存放x和y。顶级类将具有容器类的实例,并使用set方法更改x,y。 我的帮助程序类还将

  • 问题内容: 大家好,我被困在一个地方,问题是我有下面显示的三个类,并且我想在AsyncTask类中实例化我的DatabaseHelper类。您能否提供帮助,如何在AsyncTask类中获取上下文? 问题解决了 MainActivity类 数据库助手 FetchData类 # 感谢Kasra,我创建了第四个类并在调用AsyncTask之前在MainActivity中使用它 ContextStatic

  • 问题内容: 我正在用Java处理数组,但有一个问题。我知道Java中的数组是类似数据类型的集合,如下所示: 上面的声明可以作为一个数组读取,该数组是整数类型的集合。 考虑一下: 在这里,我可以说上面的是一个数组,它是不同数据类型的集合,还是它是相似数据类型(即对象)的数组? 我对此感到困惑和怀疑。在Java中,是否可以创建可以容纳不同数据类型的数组或任何种类的集合? 问题答案: Java中的所有对

  • 本文向大家介绍我们如何在HTML中使用不同的CSS类?,包括了我们如何在HTML中使用不同的CSS类?的使用技巧和注意事项,需要的朋友参考一下 在HTML中,根据元素的class属性定义样式规则。具有该类的元素将根据定义的规则进行格式化。这称为类选择器。要选择具有特定类的元素,需要编写一个句点(。)字符,后跟类的名称,例如.black 对于文档中class属性设置为black的每个元素,以黑色显示

  • 3. 我不想在我的API中传递所有的参数作为请求体,有些只有查询、变量、输入有些只有查询和变量,就像上面的json数据,我想创建相同的模型,可以在其余的API中使用。目前,我已经为每个API创建了不同的模型。 公共类CreatetRequest{ } 这里我在所有API中复制了我的模型,所以我想创建三个模型类,其中包含所有必需的变量,这些变量在我的引导应用程序中都是常见的,但同时我必须避免在res