首页 > 解决方案 > C) scanf+else+goto

问题描述

代码(这不是我的真实代码。这是示例)

scanf("%d",&a);`

selection:
printf("If you want to go back, press 1, Exit is press 2");
scanf("%d",&a);

if (a == 1)
{}
else if
{}
else
{
   printf("You entered wrong! Try Again");
   goto selection;
}
  

我这样写了一个代码。printf("If you want to go back, press 1, Exit is press 2");但是当我输入字母错误时,此代码会重复。那些'a'(scanf)是int。我想解决这个问题,但我没有想通。所以我需要你的帮助!

标签: cscanf

解决方案


存储 scanf 返回的值(读取字段数),因此如果 scanf 没有读取任何内容,则将其视为无效输入。

selection:
printf("If you want to go back, press 1, Exit is press 2");

nf = scanf("%d",&a);

if (nf == 1 && a == 1)
{}
else if (nf == 1 && ....)
{}
else
{
   printf("You entered wrong! Try Again");
   goto selection;
}

推荐阅读