问题与sscanf和比较数字

时间:2014-11-26 07:36:45

标签: c scanf

我需要帮助。我的课程开始于:./ proj --tan 1.024 6 10我通过泰勒计算tangens' 多项式。迭代范围是1到13.如果迭代的nuber高于13,我需要停止程序,但是下面的代码不起作用。

if ((sscanf(argv[3], "%d", &n) >= 14) || (sscanf(argv[3], "%d", &n) < 0))
    {
        return ERROR_WRONG_NUM;
    }
    if ((sscanf(argv[4], "%d", &m) >= 14) || (sscanf(argv[4], "%d", &m) < 0))
        return ERROR_WRONG_NUM;

1 个答案:

答案 0 :(得分:2)

sscanf的返回值是指定的输入项目数,或失败时的EOF,这不是您的预期。

在检查n

的返回值后,您应该将[1,13]与范围sscanf进行比较
items = sscanf( argv[3], "%d", &n );
if ( items != 1 || n < 1 || n > 13 ) 
    return ERROR_WRONG_NUM;