不存在的双重递减
Inexistent double decrement?
本文关键字:不存在 更新时间:2023-10-16
我正在写一个小游戏,其中有一个隐藏的单词,用户必须猜测,从一个字符到另一个字符,单词是什么。在编写这个代码时,我陷入了一些我不了解的事情中,也不了解它在哪里以及如何发生。
while(true)
{
if(Hue == 0)
Try -= 1;
if(Hue == 1)
Hue = 0;
GotoXY(0, 3);
printf("Inserisci una lettera maiuscolan>");
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的递减,更奇怪的是,Try在为0时递减两次,均匀地写在代码中并不是这样的。谢谢你的帮助。
混乱似乎主要是由于双倍递减:好吧,你正在读取char
s,很可能你点击了return,使两个char
s可用:输入的字符和返回中的'n'
。显然两个角色都不匹配,所以你会得到两个法令。
只是为了解释一下:当使用格式化的输入时,会跳过使用std::cin >> Key
的前导空格。当使用scanf("%c", &c)
时,提取每个字符。我认为可以让scanf()
使用跳过前导空格
if (1 == scanf(" %c", &c)) {
// process the input
}
请注意"%c"前面的多余空间。要调试这样的问题,通常最好打印读取的内容。。。当然,你总是需要验证阅读是否真的成功。
相关文章:
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- g++ 说函数不存在,即使包含正确的标头
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- C++ 尝试在不存在的构造函数中引用已删除的函数(使用 rapidJson)
- 查找第一个数组中不存在的元素
- 查找不存在的键时,unordered_map返回什么
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- set::find 查找不存在的元素
- 有没有办法将字符串添加到 Vector 中,但前提是它尚不存在?->C++
- inet_ntop返回不存在的地址
- CPP 使用不存在的键访问映射
- 为什么QMediaGaplessPlaybackControl不存在?
- 如果键不存在,使用 [] 运算符访问 STL Map 元素会添加新元素
- 标记未定义的颜色,并且颜色匹配系统中不存在样品
- 为什么minhook库目录不存在
- 为什么 std::vector::p ush_front() 不存在?
- 不存在从"Magick::Color"到"MagickCore::Quantum"的合适转换功能
- 为什么 MDI 子窗口在WM_NCCREATE后不存在?
- C++,QT. QShortcut的函数调用不存在