C 只输入小数

标签 c string input numerics

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

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

或者

    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);
}

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

最佳答案

版本一是完全错误的。它进行指针比较,因为字符串文字会衰减为指针,并且字符会提升为 int .

版本二很接近,尽管你应该真正使用 isdigit来自<ctype.h> .

顺便说一句,你知道i < strlen(string)吗?在循环终止条件中将线性时间算法变成二次时间算法?

关于C 只输入小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022614/

相关文章:

c - 传递数组第一个元素的地址时,为什么要写&Array[0]而不是Array?

java正则表达式有时无法匹配

python - 在Python中使用正则表达式匹配字符串中重复出现的单词

java - 使用 nextInt() 输入整数

python - 尝试使用下划线和输入来理解Python循环

c - 添加 libc 支持以在 android ndk 中使用 libintl.h header

c - 被释放的指针未在 C 中分配

c - 函数返回可选值

c - 当 printf 一个字符串时,我们不使用 *。为什么?

python - 使用jupyter在python3中用字符串替换标准输入