【发布时间】:2018-10-29 07:03:52
【问题描述】:
我正在创建一个程序,该程序使用具有多个功能的二维数组来实现井字游戏。我将如何创建一个函数来清除每个单元格中的所有“x”和“o”字符,并让单元格将其重置为下划线字符“_”?一个例子连同你的解释将不胜感激!
【问题讨论】:
-
您尝试过的任何代码?
标签: c function multidimensional-array
我正在创建一个程序,该程序使用具有多个功能的二维数组来实现井字游戏。我将如何创建一个函数来清除每个单元格中的所有“x”和“o”字符,并让单元格将其重置为下划线字符“_”?一个例子连同你的解释将不胜感激!
【问题讨论】:
标签: c function multidimensional-array
您可以使用memset 将数组重置为_,如下所示。
char array[10][10];
memset(array, '_', sizeof(array));
【讨论】:
您可以使用 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 和其他一些功能,但请确保你已经理解它们在返回。
最好的问候老兄!
【讨论】:
while 和for 循环的任何具体原因?
i 的中断条件。 while(array[i++]) 迟早会通过读取 array 的界限来调用未定义的行为。
my code may can doesn't work 因为如果他复制 --> 和 --> 粘贴,他将完全不明白它是如何工作的。嗯,我是 Stack 的新手,我想互相帮助,然后我明白你在看什么,我会编辑我的帖子 Dude。问候。
my code may can doesn't work 在这种情况下你不应该回答。