該函數要求loLimit和hiLimit之間的整數,並允許用戶安全地輸入它。它會一直詢問,直到用戶在合法範圍內輸入一個數字。然後它返回合法的號碼。while循環的輸出不正確
The correct output should be:
Please enter an integer between 32 and 127: 19
Please enter an integer between 32 and 127: 128
Please enter an integer between 32 and 127: 48
Please enter an integer between 48 and 127: 47
Please enter an integer between 48 and 127: 65
但是,我的輸出行爲奇怪,好像loLimit值來回變化。此外,輸入兩次後纔會記錄數字。
Please enter an integer between 32 and 127: 2
Please enter an integer between 32 and 127: 150
Please enter an integer between 32 and 127: 56
Please enter an integer between 32 and 127: 56
Please enter an integer between 56 and 127: 66
Please enter an integer between 32 and 127: 66
Please enter an integer between 66 and 127: 77
這裏是我的代碼:
int enterNumber (int loLimit, int hiLimit){
int min;
int max;
do {
printf("Please enter an integer between %d and %d:\n", loLimit, hiLimit);
scanf("%d", &min);
}
while (min<loLimit || min>hiLimit);
return min;
}
int main(){
enterNumber(32,127);
int min=enterNumber(32,127);
enterNumber(min,127);
int max=enterNumber(enterNumber(32,127),127);
}
[scanf](http://pubs.opengroup.org/onlinepubs/009695399/functions/fscanf.html)函數可能*失敗*,因此您應該*總是*測試其結果(成功掃描的項目數) –