0

コードに問題があります。キーボードから 3 つの unsigned char を読み取ると期待どおりに動作しません。既に fflush() を使用してバッファをフラッシュしていますが、2 番目の変数はキーボードから値を取得できます。これが私のコードです:

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

「unsigned char」を「値」として解析できるフォーマット指定子はありません!

次のドキュメントを参照してください。

解析する "shortes" 値scanfshort unsigned int=> %hu

于 2013-08-07T08:50:39.077 に答える