我正在写一个小游戏,其中有一个隐藏的单词,用户必须猜测,char到char,是什么单词。 在对此进行编码时,我陷入了一些我不知道的事情,以及它发生的地点和方式。
while(true)
{
if(Hue == 0)
Try -= 1;
if(Hue == 1)
Hue = 0;
GotoXY(0, 3);
printf("Inserisci una lettera maiuscola\n>");
GotoXY(1, 4);
scanf("%c", &Key);
GotoXY(0, 4);
printf(" ");
GotoXY(0, 6);
printf("Numero di tentativi rimasti: %d ", Try);
for(unsigned short Iterator = 1; Iterator < Length - 1; ++Iterator)
if(Key == UserString[Iterator])
{
for(unsigned short SecIterator = Iterator; SecIterator < Length - 1; ++SecIterator)
{
if(Key == UserString[SecIterator])
{
GotoXY(SecIterator, 1);
printf("%c", Key);
}
}
Hue = 1;
break;
}
}
Hue是一个简单的控制变量,用于检查密钥是否在单词中。 如果它仍为0,则键不在单词中,因此Try会自行减少,依此类推。
但是,Hue,无论是0还是1导致Try的减少,更值得注意的是,当0为0时,尝试减少两次,在代码中均匀地写入不是那样的。 谢谢你的帮助。
答案 0 :(得分:1)
似乎混淆主要是由于双重减少:嗯,你正在阅读char
s并且很有可能你回击使两个char
可用:输入的字符和{{1从回归。因为显然两个字符都不匹配,所以你得到两个减量。
只是为了解释一下:当使用'\n'
格式化输入时,会跳过前导空格。使用std::cin >> Key
时,每个字符都会被提取出来。我认为你可以scanf("%c", &c)
使用
scanf()
请注意'%c'前面的额外空格。要调试这样的问题,通常最好打印读取的内容。 ......当然,你总是需要验证读取是否真的成功。