好吧,我对C非常不满意。我想显示文本提示并抓住用户的响应。仅当响应有效时(数字1、2或3),我才想继续。只要输入为数字整数,下面的代码就可以正常工作。非数字输入将Do While放入循环(例如scanf被忽略),非整数将被截断。我想我也可能想为空输入测试EOF。有人可以把2x4拍到我的头上,告诉我我犯了什么基本错误吗?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
int timeframe;
do
{ timeframe = 0;
printf("Select statistics set required:\n");
printf(" 1. Daily period statistics\n");
printf(" 2. Monthly period statistics\n");
printf(" 3. Custom period statistics\n");
scanf("%d", &timeframe);
}
while(timeframe != 1 && timeframe != 2 && timeframe != 3 && !isdigit(timeframe));
printf("time frame is %d\n", timeframe);
return 0;
}