错误发生在int getInt(void)的while循环中 我想循环并要求用户输入一个数字,所以如果他们输入10就会通过,但如果他们要输入10abc,它应该循环并再次询问并继续询问,直到有效输入。它应该是万无一失的,所以它只会传递一个数字而且就是这样。由于某种原因,while循环中的printf语句无限循环,我无法输入新值。
sudo chown -R YOUR_USERNAME:admin /usr/local/
// 1-在提交里程碑之一时注释掉主要内容 // 2-您的最终里程碑应该与以下测试程序完美匹配。 //注释掉main()删除箭头后面的下两个字符
{#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);
/ *结束评论主要出* /
//在这里实现里程碑式的功能: 无效欢迎(无效) { printf(“--- --- = Grocery Inventory System === --- \ n”);
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: %d\n", iVal);
// Testing Get Int Limited
printf("Enter an integer between 10 an 20: ");
iVal = getIntLimited(10, 20);
printf("Your entered %d\n", iVal);
// Testing Get Double
printf("Enter a floating point number: ");
dVal = getDbl();
printf("You entered: %0.2lf\n", 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.2lf\n", dVal);
printf("End of tester program for milestone one!\n");
return 0;
}
答案 0 :(得分:0)
tsk tsk jason。阅读大纲并查看流程图。你需要添加&#34; clrKyb();&#34;进入while循环。
同样清晰的字符已经是stdio.h库中包含的一个函数。(这在我们的教科书和在线笔记中确实如此)
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 ;
} ;