我是一名初學者程序員。我有一個不允許輸入浮點數或字符的函數。它使用gcc 3.4.2正常工作,但現在我更新到4.7.1,它不能正常工作。它只適用於第一個輸入a [0]。如果我輸入「x」,它會顯示「錯誤的輸入」,但是如果我輸入例如'1'爲[0],然後'x'爲[1],它仍然會說輸入OK並且爲[1]分配'1';我怎樣才能解決這個問題?謝謝!C,不同的GCC,fflush()不工作?
void initArray(unsigned int a[]) {
double q;
int x, c;
for (x = 0; x < SIZE; x++){
printf("a[%d] ", x);
printf("Enter number: ");
scanf("%lf", &q);
if (q == (unsigned int) q) {
printf("Input OK.\n");
a[x] = q;
fflush(stdin);
}
else {
printf("Wrong Input\n");
fflush(stdin);
x--;
}
}
printf("\n");
}
你嘗試過調試運行你的代碼?或者至少是某種記錄? –
_如果給定的流是輸入類型,那麼函數的行爲是undefined._:來自http://en.cppreference.com/w/c/io/fflush – hmjd
你的數組是unsigned int,你是從整體上讀取雙倍的wgy?!。爲什麼不直接從標準輸入中讀取unsigned int「%u」 – MOHAMED