如何在输入无效时递归询问输入?

时间:2016-02-19 02:52:39

标签: c function pointers recursion input

我想检查一下,如果输入不是数字,那么它将递归地再次要求输入,直到它收到一个数字。这是我目前的代码。仅供参考:禁止循环播放。

#include <stdio.h>

int input(int *n){
    int x;
    scanf("%d",&x);
    if (!(x>=-32768 && x<=32767)){
        printf("not valid, try again.");
        return input(n);
    }
    else{
        *n = x;
        return 0;
    }
}

int main(void)
{
    int num1, num2;
    int *n = &num1;
    int *m = &num2;
    input(n);
    input(m);
    printf("%d %d\n",num1,num2);

    return 0;

}
提前thx。

3 个答案:

答案 0 :(得分:0)

您可以,但在这种情况下不应使用递归,请检查loop

一样
Do{
   /* read the number*/
  }while(!condition_to_be_valid);

答案 1 :(得分:0)

您的代码在gcc 4.8.4上运行完美,您可以尝试其他编译器,例如gcc

答案 2 :(得分:0)

试试这个:

static int num1, num2;

此外,如果您可以发布汇编代码,将会非常有帮助。您可以使用gcc -S

获取它