【问题标题】:checking values in a char multidimensional array, cpp检查 char 多维数组中的值,cpp
【发布时间】:2016-03-07 13:22:22
【问题描述】:

我正在尝试检查用户输入是否与 char 多维数组中的特定值匹配。但我似乎无法找到这样做的方法。用户输入将是从 1 到 9 的数字。我将遍历我的数组以找到匹配的值。我的代码如下,

 char input;
 getline(cin,input);
 char gameBoard[3][3] = {{'1','2','3'},
                         {'4','5','6'},
                         {'7','8','9'}
                        };
for(int i=0; i<3; i++)
{
    for(int j=0; j<3; j++)
    {
        gameBoard[i][j];  //SOME CODE TO COMPARE THE VALUE TO USER INPUT
    }
} 

我尝试过使用 strcmp,但只能对一维数组执行此操作。

我也尝试通过 atoi 将 char 值转换为数字,但出现错误,

error: invalid conversion from 'char' to 'const char*' [-fpermissive]|

任何关于如何比较的建议将不胜感激。谢谢

【问题讨论】:

  • 我统计了这个问题中至少有三四个错误的地方。在我看来,你用这个 C++ 东西走得太快了。在解决这个问题中适度复杂的逻辑之前,在我看来,您应该回去花更多时间研究基础知识。就像什么是 char,什么是 std::string,以及它们中的哪一个被 std::getline 使用。字符和整数等有什么区别……如果您仍然没有牢牢掌握这些基础知识,那么尝试编写这样的问题几乎是不可能的。
  • 稳健地处理用户输入是出了名的困难。您可以使用geline(),但您需要std::string 作为第二个参数。如果您依赖用户每行只输入一个字符(数字),那么测试就是string s; getline(cin, s); if(s[0] == gameBoard[i][j])...
  • @SamVarshavchik 指出。谢谢

标签: c++ multidimensional-array char strcmp atoi


【解决方案1】:

怎么样:

if (gameBoard[i][j] == input) {... }

【讨论】:

  • 我认为 OP 需要关于如何获取 input 的建议。
  • 是的,谢谢。我想我太努力了。
  • @SafwanUllKarim 如果您还想知道如何获取inputcin.get(input); 应该可以。
【解决方案2】:

strcmp 需要一个以零结尾的字符串,而不是一个字符。如果需要比较一个以零结尾的字符串str是否为单个字符c,可以使用

(str[0] == c) && (str[1] == '\0')

你的情况

if ((input[0] == gameBoard[i][j]) && (input[1] == '\0')) { /* ... */ }

'\0' 是字符串的零终止符。在str[1] 之前检查str[0] 很重要,因为str 可能为空(即str[0] == '\0'),并且当读取超过字符串末尾时(例如来自str[1] 的值),您的程序可能会崩溃.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多