我正在尝试编写一个小小的CLI Hangman游戏,只是为了在C中创建一些使用我非常有限的语言特性的东西,使得迄今为止的信息保持不变。数组作为函数参数
我没有在书中字符串,所以我已经创建了一个所谓的字典,这是字符的多维数组,每一行代表一个字,每列的信。因此,如果我想把这一天今天的Dictionary.com字(“预言”)在词典中,我喜欢写东西
dictionary[MAX_WORDS][MAX_CHARS] = {
...
{'p', 'r', 'o', 'g', 'n', 'o', 's', 't', 'i', 'c', 'a', 't', 'e'},
...
}
接下来,我代表在屏幕上可以打印,数组的字字符,最初由下划线组成。
我想到的方式是,当玩家输入一个字母时,我会检查它是否存在于当前单词中。如果是这样,我用实际的字母替换word[]
数组中的下划线。当word[]
阵列中没有下划线时,我认为该字会被猜出。
第一个想法是编写一个函数int in_array(char array[], char letter)
,根据是否在数组中找到该字母,它将返回0或1。但后来我发现我无法通过dictionary[][]
作为第一个参数。到目前为止,我还没有找到解决方案,所以我必须使用两个函数,每个阵列一个,或者...重新思考整个想法。
所以总结一下,我需要一个函数来检查元素是否存在于一维或多维数组中。任何解决方案提前致谢!
二维数组是一个指向数组的指针 - 所以如果它需要一个类型为“char **”的参数,可以将它传递给一个函数。但是,如果你知道当前的单词,你能不能通过'dictionary [currentWordIndex]'? – sje397 2010-08-01 15:57:57
@ sje397:不!二维数组不是指向数组的指针,它是一个数组数组。像所有数组一样,当它传递给函数时,它会衰减到指向其第一个元素的指针,但这种类型是指向数组的指针,而不是指向指针的指针。 'char(*)[MAX_CHARS]'与'char **'不是同一个类型。 – 2010-08-01 16:03:58
您可以返回单词中的匹配位置。如果有两个以上的匹配,你必须重新考虑这个解决方案。你可以在问题中显示匹配的字母,方法是传递问题的引用,并在解析字母匹配字母时更新它。 – 2010-08-01 17:06:27