我想製作一個程序來檢查用戶是否輸入了有效的雙數。 我知道如何使它做檢查有效的整數:如果聲明檢查用戶是否輸入了有效的雙數
if (scanf("%d%c", &inter, &newLine) != 2 || newLine != '\n')
但是當它來檢查double類型這是行不通的。
我想:
if (scanf("%d%c", &inter, &newLine) != 2.00 || newLine != '\n')
和:
if (scanf("%d%c", &inter, &newLine) != 2.000000 || newLine != '\n')
這些都不顯得工作
這裏是如何檢查有效的整數類型的完整示例;
do {
num = inter % 1;
if (scanf("%d%c", &inter, &newLine) != 2 || newLine != '\n') {
printf("Invalid integer, please try again: ");
flushKeybord();
} else {
x = x + 1;
}
} while (x == 0);
的功能,它的調用如果無效,僅僅是一個清除緩衝區
從'scanf'的返回值是不是輸入的值,但項目數成功掃描。您必須將'%lf'格式說明符用於'double'而不是'%d'。還要注意'2.00'與'2.000000'完全相同。更多的零並不意味着「更努力」! –
如果用戶輸入'「123 \ n」'或'「123 \ n」'或'「1.0e1000 \ n」'?那些有效? – chux
是的,如果用戶輸入123 \ n,這將是無效的,因爲它不是一個雙重類型與123 \ n相同,如果用戶輸入1.0e1000也是無效的,因爲用戶輸入的字符不是'\ n' –