如何在基于控制台的交互式C程序中清理用户输入?

时间:2018-08-29 03:04:56

标签: c logic

好吧,我对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;
}

0 个答案:

没有答案