I'm doing a Banking System project and need to make sure that every input is valid(program has to be robust). If invalid input is given then user has to enter again.
But when i have a variable of int
type and user enters char
type an infinite loop begins.
For example:
int i;
cin>>i;
If user enters a char
infinite loop starts. How can i avoid it and ask user for an input again?
Thanks
For loop is used to print the alphabets from A to Z. A loop variable is taken to do this of type 'char'.
In computer programming, an infinite loop (or endless loop) is a sequence of instructions that, as written, will continue endlessly, unless an external intervention occurs ("pull the plug").
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With