函数引用返回的变量给出了奇怪的值

时间:2015-11-28 18:23:14

标签: c function reference return

我最近一直在做一个刽子手游戏,这个函数应该检查一个用户在数组中输入的字母(包含一个预定义的单词,如“BUILDING”)并添加一个计数器(Count)如果字母存在或减少了生命(从主函数中定义的5开始 - 如果它不存在)。

现在Count变量工作正常,但Lives变量仍然保持减少,即使字母存在并且它不仅减少1而是减少更大的数量导致相当大的负数。

这是代码,提前感谢:

void Checkf(char X,int r,int Length,char *Hidden, int *Lives,int *Count)
{
int i;
for (i=0;i<Length;i++)
{
    if (X==Words[r][i] && Hidden[i]=='*')
    {
        Hidden[i] = X;
        *Count = *Count + 1;
    }
    else if (X!=Words[r][i] && Hidden[i]=='*')
    *Lives = *Lives - 1;
}
}

1 个答案:

答案 0 :(得分:2)

出现这种情况是因为您(可选)在循环的每次迭代中减少Lives的值。 您可以添加一个变量来指示是否找到该字母,然后在循环结束后减少Lives的值,如下所示:

void Checkf(char X,int r,int Length,char *Hidden, int *Lives,int *Count)
{
int i;
unsigned char found = 0;
for (i=0;i<Length;i++)
{
    if (X==Words[r][i] && Hidden[i]=='*')
    {
        Hidden[i] = X;
        *Count = *Count + 1;
        found = 1;
    }
}
if (!found)
{
    *Lives -= 1;
}
}