【发布时间】:2014-05-01 20:28:21
【问题描述】:
我正在编写一个 Hangman 程序。我的函数处理来自用户的字符猜测时遇到问题。我遇到的问题是我的 for 循环似乎只迭代一次,我不知道为什么。这是一项任务,所以我不要求回复特定的代码,但正确方向的一点会很好。谢谢,功能如下:
void charGuess(char *ch,char *word, int aCount)
{
char *chr;
int theResult, i, k, lossCount = 0;
char aArray[aCount+1];
char *current;
for(k=0;k<aCount;k++)
{
aArray[k] = '_';
}
printf("\nThe char count: %d\n", aCount); //the "aCount" which ive passed in works
while(1){
for(i=0; i<aCount; i++) //this loop only iterates once. "aCount" is never 0 when i pass it.
{
current = word[i];
printf("the current char is %c", current);
if(strcmp(current, ch))
{
printf("\ni is: %d\n", i);
aArray[i] = current;
printf("%c", aArray[i]);
displayNewDashes(aCount, aArray);
break;
}
else
{
lossCount++;
hangTheMan(lossCount);
printf("Loss count: %d", lossCount);
}
}
}
}
【问题讨论】:
-
你将
aCount的什么值传递给函数? -
当你
break时,你离开了循环...... -
@JoachimPileborg "aCount" 每次运行程序时都会发生变化,因为它是为刽子手生成的随机单词的字符数。
-
这段代码中错误的数量使循环提前离开的事实相形见绌。您需要查看 C 中的指针是如何工作的。例如:
printf("the current char is %c", current);不正确。就像current = word[i];一样,将警告提高到淫秽级别并解决它们将有很大帮助。 -
@Floris 我也试过不使用 break 语句,但它不起作用:(