【发布时间】:2021-04-16 05:29:31
【问题描述】:
if((selected[0]=='H')&&(selected[1]=='Y')&&((selected[2]-'0')<=4))
{
integer_v=10+(selected[1]*100)+(selected[2]-'0');
printf("%d", integer_v);
}
else
{
while((selected[0]!='H')||(selected[1]=='Y')||((selected[2]-'0')<=4))
{
printf("Wrong input!(%s) Please try again:\n", selected);
scanf(" %s", re_selected);
strcpy(selected,re_selected);
}
integer_v=10+(selected[1]*100)+(selected[2]-'0');
printf("%d", integer_v);
}
在我创建这个简单棋盘游戏的项目中,我无法摆脱这个 while 循环。这段代码的目的是检查我给出的输入(选择),它是一个字符数组,第一个是“H”,第二个是“Y”,第三个插槽中是否有一个从 1 到 4 的数字大批。但是当我陷入while循环时我做错了(第一次尝试成功)。即使满足要求,仍然会出现“输入错误”消息。 示例:
Choose which pawn you want to move:
HY5
Wrong input!(HY5) Please try again:
HY3
Wrong input!(HY3) Please try again:
HY4
Wrong input!(HY4) Please try again:
在这里,HY5确实不是必需的输入,因为5>4但是HY4可以但是代码仍然不接受它。
【问题讨论】:
-
selected来自哪里?显示所有相关代码 -
Selected 是上面简单定义的给定输入。这是我给出的输入,例如 HY4 或 HY5。
-
关键是你没有展示
selected是如何定义的。够长吗?正确的类型,...?请始终显示编译最小示例所需的所有代码。 -
我明白了。谢谢你的提醒!下次我会多加注意的。
标签: arrays c string loops while-loop