Check if a string has only numbers in C?

前端 未结 5 1050
予麋鹿
予麋鹿 2021-01-24 17:57

I\'m trying to write a simple code to check if a string only has numbers in it. So far it\'s not working, any help would be appreciated.

#include          


        
5条回答
  •  萌比男神i
    2021-01-24 18:33

    Adding to the others answers, you can also use strtol to determine if a string has all numbers or not. It basically converts the string to an integer, and leaves out any non-integers. You can read the man page for more information on this function, and the extensive error checking you can do with it.

    Also, you should use:

    scanf("%9s", numbers);
    

    Instead of:

    scanf("%s", numbers);
    

    To avoid buffer overflow.

    Here is some example code:

    #include 
    #include 
    
    #define MAXNUM 10
    #define BASE 10
    
    int main(void) {
        char numbers[MAXNUM];
        char *endptr;
        int number;
    
        printf("Enter string: ");
        scanf("%9s", numbers);
    
        number = strtol(numbers, &endptr, BASE);
    
        if (*endptr != '\0' || endptr == numbers) {
            printf("'%s' contains non-numbers\n", numbers);
        } else {
            printf("'%s' gives %d, which has all numbers\n", numbers, number);
        }
    
        return 0;
    }
    

    Example input 1:

    Enter string: 1234
    

    Output:

    '1234' gives 1234, which has all numbers
    

    Example input 2:

    Enter string: 1234hello
    

    Output:

    '1234hello' contains non-numbers
    

提交回复
热议问题