while statement error fool proof
The error occurs in the while loop at int getInt(void) I want to loop and ask the user to input a number, so like if they input 10 it would pass, but if they were to input 10abc it should loop and ask again and keep asking until a valid input is made. It should be foolproof so it will only pass with a number on its own and thats it. For some reason the printf statement inside the while loop infinitely loops and I'm not able to input a new value.
{#include <stdio.h>
void welcome(void);
int getInt(void);
double getDbl(void);
void prnTitle(void);
void prnFooter(double gTotal);
void pause(void);
double getDblLimited(double lowerLimit, double upperLimit);
// 1- comment out the main when submitting milestone one //2- Your final milestone one should run perfectly with the following tester program. //To comment out the main() delete the next two characters after the arrow
int main(void)
{
int iVal;
double dVal;
welcome();
// testing prnTitle()
printf("listing header and footer with grand total:n");
prnTitle();
printf("");
// Testing prnFooter()
prnFooter(1234.5678);
printf("listing header and footer without grand total:n");
prnTitle();
prnFooter(-1);
// Testing Pause() and clrKyb()
pause();
// Testing getInt()
printf("Enter an integer: ");
iVal = getInt();
printf("You entered: %dn", iVal);
// Testing Get Int Limited
printf("Enter an integer between 10 an 20: ");
iVal = getIntLimited(10, 20);
printf("Your entered %dn", iVal);
// Testing Get Double
printf("Enter a floating point number: ");
dVal = getDbl();
printf("You entered: %0.2lfn", dVal);
// Tesing Get Double Limited
printf("Enter a floating point number between 10.00 an 20.00: ");
dVal = getDblLimited(10.0, 20.0);
printf("You entered: %0.2lfn", dVal);
printf("End of tester program for milestone one!n");
return 0;
}
/* End Commenting out the main out*/
// implement your functions for milestone one down here: void welcome(void) { printf("---=== Grocery Inventory System ===---n");
}
void prnTitle(void)
{
printf("Row |SKU| Name t | Price |Taxed| Qty | Min | Total |Atn n");
printf("----+---+--------------------+--------+-----+-----+-----+------------+|---n");
}
void prnFooter(double gTotal)
{
printf("--------------------------------------------------------+-----------------n");
//float gTotal = 1234.57;
if (gTotal > 0)
{
printf("%12.21f", gTotal);
}
else
{
printf("");
}
}
void clrKyb(void)
{
char b;
while (b != 'n')
{
scanf("%c", &b);
}
}
void pause(void)
{
printf("Press <Enter> to continue...");
clrKyb();
}
int getInt(void)
{
//printf("Enter an interger:");
int d;
char c;
scanf("%d%c", &d, &c);
while (c != 'n')
{
printf("Invalid integer, please try again");
scanf("%d%c", &d, &c);
}
return d;
}
int getIntLimited(int lowerLimit, int upperLimit)
{
int a;
//printf("Enter an integer between %d and %d:", lowerLimit, upperLimit);
scanf("%d", &a);
while (a <= lowerLimit || a >= upperLimit)
{
// printf("Invalid value, %d < value < %d:", lowerLimit, upperLimit);
scanf("%d", &a);
}
return a;
}
double getDbl(void)
{
double d;
char c;
// printf("Enter a floating point number:");
scanf("%lf,%c", &d, &c);
while (c != 'n')
{
printf("Invalid number, please try again ");
scanf("%lf,%c", &d, &c);
}
return d;
}
double getDblLimited(double lowerLimit, double upperLimit)
{
double a;
printf("Enter a floating point number between %f and %f:", lowerLimit, upperLimit);
scanf("%lf", &a);
while (a <= lowerLimit || a >= upperLimit)
{
printf("Invalid value, %f < value < %f:", lowerLimit, upperLimit);
scanf("%lf", &a);
}
return a;
return 0;
}
tsk tsk jason. read the outline and look at the flowchart. you need to add the "clrKyb() ;" into the while loop.
also clear character is already a function included in stdio.h library.(this is literally in our textbook and online notes)
void clrkyb(void)
{
while( getchar() != 'n' );
} ;
int getInt(void)
{
int d ;
char c ;
scanf( "%d%c", &d, &c );
while( c != 'n' )
{
clrKyb();
printf( "Invalid"...": " );
scanf( "..." &.. );
}
return d ;
} ;
链接地址: http://www.djcxy.com/p/12520.html
上一篇: Java:增量/减量运算符的前缀/后缀?
下一篇: 同时声明错误的傻瓜证明