How Can I avoid char input for an int variable?

后端 未结 3 1635
栀梦
栀梦 2020-12-11 04:24

The program below shows a \'int\' value being entered and being output at the same time. However, when I entered a character, it goes into an infinite loop displaying the pr

3条回答
  •  情深已故
    2020-12-11 05:13

    Reason for Infinite loop:

    cin goes into a failed state and that makes it ignore further calls to it, till the error flag and buffer are reset.

    cin.clear();
    cin.ignore(100, '\n'); //100 --> asks cin to discard 100 characters from the input stream.
    

    Check if input is numeric:

    In your code, even a non-int type gets cast to int anyway. There is no way to check if input is numeric, without taking input into a char array, and calling the isdigit() function on each digit.

    The function isdigit() can be used to tell digits and alphabets apart. This function is present in the header.

    An is_int() function would look like this.

    for(int i=0; char[i]!='\0';i++){
        if(!isdigit(str[i]))
        return false;
    }
    return true;
    

提交回复
热议问题