C仅输入小数

时间:2011-11-05 19:16:21

标签: c string input numerics

我正在尝试将输入限制为仅在简单的C应用程序中的数字,但是我收到警告。我怀疑它与以下细分市场有关。第一版是正确的做事方式吗?谢谢。

    for(i=0;i< strlen(string); i++)
{
    if( string[i]<"0" || string[i]>"9")
        valid= FALSE;
}

OR

    for(i=0;i< strlen(string); i++)
{
    if( string[i]<'0' || string[i]>'9')
        valid= FALSE;
}

我的其余代码是

    void main()

{
    char number[4];
    printf("Please enter a decimal number: ");
    gets(number);   
    if (numeric(number))
        printf("'%s' is a valid number\n", number);
    else
        printf("'%s' is an invalid number\n", number);
}

为了澄清我必须按照我正在做的练习按照给出的方式进行检查。谢谢。

2 个答案:

答案 0 :(得分:1)

版本1完全错误。它进行指针比较,因为字符串文字衰减为指针,字符被提升为int

第二版很接近,但您应该使用isdigit中的<ctype.h>

顺便说一下,您是否知道循环终止条件中的i < strlen(string)会将线性时间算法转换为二次时间算法?

答案 1 :(得分:0)

您不能只使用if (scanf ("%d", &n)==1)或致电strtol吗?