0

タイトルにエラーがあります。ほぼすべてのコードを削除し、次のような単純なコードを保持します。

#include <iostream>
#include <ctime>

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

    cin.get();
    return;
}

しかし、このエラーは引き続き表示されます。誰でもこの問題の解決を手伝ってくれます。VC++ 2005 と Win 7 x64 を使用しています

4

1 に答える 1

2

ではscanfではなく%dであると仮定します。したがって、あなたの場合、「tmpDayOfWeek、tmpDay、tmpMonth」のメモリが上書きされます...intchar

scanf タイプ フィールド文字も参照してください。

必要に応じて、幅を明示的に指定できます。scanf 幅の指定

したがって、宣言を次のように変更します。

unsigned char tmpDayOfWeek, tmpDay, tmpMonth;

unsigned int tmpDayOfWeek, tmpDay, tmpMonth;

そしてそれは動作します...

また、「符号なし」の値を使用しています。つまり、指定子を使用する必要があり%uます...

于 2013-08-07T06:35:30.267 に答える