0

我的代码有问题,当我从键盘读取 3 个无符号字符时,它不能按预期工作,我已经使用 fflush() 刷新缓冲区,但是第二个变量可以从键盘获取值。这是我的代码:

void main(){
    // input Date from keyboard
    unsigned char tmpDayOfWeek;
    unsigned char tmpDay;
    unsigned char tmpMonth;
    unsigned int tmpYear;
    printf("Please input your date:\n");
    printf("  Day of Week (0 for Sunday, 1 for Monday,...): "); 
    fflush(stdin);
    scanf("%hhu", &tmpDayOfWeek);
    printf("  Day (1..31): ");
    fflush(stdin);
    scanf("%hhu", &tmpDay);
    printf("  Month (1..12): ");
    fflush(stdin);
    scanf("%hhu", &tmpMonth);
    printf("  Year (1900..9999): ");
    fflush(stdin);
    scanf("%u", &tmpYear);
    printf(" dow = %d\n", tmpDayOfWeek);
    printf(" Day = %d\n", tmpDay);
    printf(" Month = %d\n", tmpMonth);
    printf(" Year = %d\n", tmpYear);

    fflush(stdin);
    cin.get();
    return;
}

当我运行此代码并从键盘 3、4、5 和 2000 输入时,输出为:

dow = 3 
Day = 0 
Month = 5 
Year = 2000

tmpDay 的值为 0,虽然我输入了 4 任何人请帮助我,谢谢,HoangVi P/S:我使用 VC++ 2005

4

1 回答 1

1

没有允许将“无符号字符”解析为“值”的格式说明符!

请阅读以下位置的文档:

要解析的“shortes”值scanfshort unsigned int=> %hu

于 2013-08-07T08:50:39.077 回答