【问题标题】:Creating a function where I clear every position in a 2-D array and making it the default '_'character cell创建一个函数,清除二维数组中的每个位置,并将其设为默认的“_”字符单元格
【发布时间】:2018-10-29 07:03:52
【问题描述】:

我正在创建一个程序,该程序使用具有多个功能的二维数组来实现井字游戏。我将如何创建一个函数来清除每个单元格中的所有“x”和“o”字符,并让单元格将其重置为下划线字符“_”?一个例子连同你的解释将不胜感激!

【问题讨论】:

  • 您尝试过的任何代码?

标签: c function multidimensional-array


【解决方案1】:

您可以使用memset 将数组重置为_,如下所示。

char array[10][10];
memset(array, '_',  sizeof(array));

【讨论】:

    【解决方案2】:

    您可以使用 memset,这是您需要采取的方式,它既快速又安全。 (view the answer of @Kiran)。

    但我会向你解释一些事情。

    如果您有兴趣,它是如何在后端工作的,您可以自己重现它?


    简介 -->

    您可以制作标准库的所有功能,只是为了您的个人 理解。您可以制作自己的库,什么也不做,什么都不做少于每个函数上带有前缀“my”的库。这比有时仅仅阅读文档更好理解,但每个人都没有这种头脑。我保证我从来没有说过其中一种方法比另一种更好,只是有时它对你自己更好。在我的经历中,我接受了所有方法,因为有时你需要一种,有时又需要另一种。


    解决方案 -->

    lenght_array_2D(char **2D_array)  // A func which will return the length of your array
    {
       int i = 0;
    
       if (!2D_array)
          return (0);
    
       for (; 2D_array[i] ; i++) {
          //todo something such as debug log.
       }
       return (i);
    }
    
    [...]
    
    int y = lenght_array_2D(your_2Darray);
        while (i < y) {  // walk into your array
          for (int j = 0 ; array[i][j] ; j++) { //check on each line if you have the pattern asked
            if (array[i][j] == 'x' || array[i][j] == 'o')
                array[i][j] = '_'; // if it is, you can replace it.
          }
           i++;
        }
    

    尝试了解一个函数的后端,你使用它对你自己的理解和你的体验有好处。

    我希望你已经很好地理解了,从长远来看,你会使用 memset 和其他一些功能,但请确保你已经理解它们在返回。

    最好的问候老兄!

    【讨论】:

    • 混合whilefor 循环的任何具体原因?
    • @alk 不,我在回答中指定这只是理解“如何做到这一点”的一种方式。我们可以优化它。您可以使用 for 和 while 循环进入一个数组,这不是问题,您有很多文章都谈到了何时必须使用“for”或“while”,但请注意两者都有效!
    • sn-p 错过了i 的中断条件。 while(array[i++]) 迟早会通过读取 array 的界限来调用未定义的行为。
    • 是的,但同样,这只是一个展示方式的示例,我不会用好的方式回答他的问题,因为它太容易了,如果我将它引导到最好的方式,那就是对他来说比复制和过去更好。最后一个,我指定了:my code may can doesn't work 因为如果他复制 --> 和 --> 粘贴,他将完全不明白它是如何工作的。嗯,我是 Stack 的新手,我想互相帮助,然后我明白你在看什么,我会编辑我的帖子 Dude。问候。
    • my code may can doesn't work 在这种情况下你不应该回答。
    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多