我正在写一个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);
}
}
}
}
答案 0 :(得分:3)
由于您声明这是一个赋值,而您正在寻找指针,这里有一些基本的调试步骤。
1)打开编译器能够生成的所有警告,并修复代码,直到警告消失为止。现在上面的收益率(用gcc):
hang.c:20:21: warning: incompatible integer to pointer conversion assigning to
'char *' from 'char'; take the address with & [-Wint-conversion]
current = word[i];
^ ~~~~~~~
&
hang.c:21:46: warning: format specifies type 'int' but the argument has type
'char *' [-Wformat]
printf("the current char is %c", current);
~~ ^~~~~~~
%s
hang.c:26:27: warning: incompatible pointer to integer conversion assigning to
'char' from 'char *'; dereference with * [-Wint-conversion]
aArray[i] = current;
^ ~~~~~~~
2)使用调试器逐步执行代码。如果您的编译器没有调试器,请获取新的编译器。严重。
3)如果仍然无法弄清楚为什么循环没有表现,请生成仍然具有意外行为的最小示例。很可能,做一个小例子就会暴露出这个问题。
4)如果仍然无法看到它,请在您的问题中记录以上所有内容 - 我们很乐意为您提供完成所需的提示。