【发布时间】:2013-12-24 22:23:30
【问题描述】:
我需要以下函数的帮助,它需要一个整数输入;当我插入“F”(非数字字符)之类的内容时,程序卡住了,它不显示任何输出或让我插入更多输入。 如何解决这个问题?
int input_legality(int game_board[FIELD_ROWS][FIELD_COLS])
{
int input=0;
while(1)
{
if(scanf("%d", &input)==1)
{
if(input==DOWN || input==LEFT || input==RIGHT || input==UP)
{
return input;
}
else
if(input==EXIT)
{
printf("\n program exited by user \n");
return 1;
}
else
if(input==PRINT)
{
printField(game_board);
continue;
}
else
{
fprintf(stderr,"your step is undefined, please try another one\n");
continue;
}
}
}
return 0;
}
【问题讨论】:
-
cplusplus.com/reference/cstdio/scanf 你应该处理错误情况(你的 "if(scanf("%d", &input)==1)" 没有 "else")。
-
我已经尝试过了,它不起作用,给出完全相同的结果。 (我试过 else 继续;)
-
“一模一样”是什么意思?比如说,如果你放在那里,那就不一样了。
-
请格式化您的代码并提供一个最小示例(主函数、预期输入、预期输出)。目前您的缩进与大括号不匹配,所以我认为您的大括号可能是错误的。