Hi Kerry,
assuming you want to keep using a function from the scanf() family for
now, you should take a look at its man page.
scanf() will return the number of input items successfully matched and
assigned.
--
Delio
On 19/01/2009, at 3:33 PM, [email protected] wrote:
Below is a wee program written in C which prompts the user for two
integers between 1 and 100 and multiplies the two numbers. It all
works
fine and dandy as it is, unless you enter anything but a valid
integer,
then you get stuck in an infinite loop.
The answer to this is beyond the scope of the module I am currently
studying but I'm too impatient to wait until I get to some of the more
advanced modules to learn it. I was told it's a limitation with scanf.
So does anyone have a nice solution on how I can catch any input
that is
not an integer and then return to the appropriate prompt?
Cheers
Kerry
*************************************************************************
/* This program prompts the user for two numbers under 100.
* it then tests to make sure both numbers are below 100,
* then multiplies the numbers and displays the answer
*/
#include <stdio.h>
#include <conio.h>
#define MAXSIZE 100 // Maximum number size
#define MINSIZE 1 // Minimum number size
int answer(int val1, int val2);
void main()
{
int num1 = 0, num2 = 0;
printf("Enter a number between %d and %d: ", MINSIZE, MAXSIZE);
scanf("%d", &num1);
while ((num1 < MINSIZE) || (num1 > MAXSIZE))
{
printf("%d is outside the boundry given\n\n", num1);
printf("Enter a number between %d and %d: ", MINSIZE, MAXSIZE);
scanf("%d", &num1);
}
printf("Enter another number between %d and %d: ", MINSIZE,
MAXSIZE);
scanf("%d", &num2);
while ((num2 < MINSIZE) || (num2 > MAXSIZE))
{
printf("%d number is outside the boundry given\n\n", num2);
printf("Enter another number between %d and %d: ", MINSIZE,
MAXSIZE);
scanf("%d", &num2);
}
printf("%d times %d equals %d", num1, num2, answer(num1, num2));
getch();
}
int answer(int val1, int val2)
{
return val1 * val2;
}