【发布时间】:2016-01-17 22:55:48
【问题描述】:
scanf("%d", &jogadores[pos].dados[4][2]);
while (jogadores[pos].dados[4][2] < 0) {
printf("O valor não pode ser menor que 0, introduz novamente: ");
scanf("%d", &jogadores[pos].dados[4][2]);
};
你知道这段代码有什么问题吗,我认为它跳过了第一个scanf,因为它一直在打印O valor não pode ser menor que 0, introduz novamente:
【问题讨论】:
-
我猜,这是你的问题。 &jogadores[pos].dados[4][2]
-
始终检查来自
scanf的函数返回值。这里应该是1。 -
@TonyTannous:我们不知道
jogadores[pos].dados[4][2]的类型,但如果是int,问题就出在其他地方。 -
@chqrlie 他只给了我们 4 行代码。在这 4 行代码中,除了他保存和读取的地址之外,没有任何可疑之处。
-
@TonyTannous:是的,有!在这 4 行中的 2 行中,他未能测试
scanf的返回值。这就是错误行为的原因所在,例如无限循环。修复需要超过 4 行,但只调用一次scanf。