how to check if the input is a number or not in C?

前端 未结 8 2096
暖寄归人
暖寄归人 2020-11-27 05:38

In the main function of C:

void main(int argc, char **argv)
{
   // do something here
}

In the command line, we will type any number for ex

8条回答
  •  没有蜡笔的小新
    2020-11-27 06:06

    You can use a function like strtol() which will convert a character array to a long.

    It has a parameter which is a way to detect the first character that didn't convert properly. If this is anything other than the end of the string, then you have a problem.

    See the following program for an example:

    #include 
    #include 
    
    int main( int argc, char *argv[]) {
        int i;
        long val;
        char *next;
    
        // Process each argument given.
    
        for (i = 1; i < argc; i++) {
            // Get value with failure detection.
    
            val = strtol (argv[i], &next, 10);
    
            // Check for empty string and characters left after conversion.
    
            if ((next == argv[i]) || (*next != '\0')) {
                printf ("'%s' is not valid\n", argv[i]);
            } else {
                printf ("'%s' gives %ld\n", argv[i], val);
            }
        }
    
        return 0;
    }
    

    Running this, you can see it in operation:

    pax> testprog hello "" 42 12.2 77x
    
    'hello' is not valid
    '' is not valid
    '42' gives 42
    '12.2' is not valid
    '77x' is not valid
    

提交回复
热议问题