scanf控制用戶輸入數據的合法範圍_算法_c語言
阿新 • • 發佈:2017-07-01
file -s eof 魯棒性 返回 return 獲取 設計 結果
如題:
要求用a,b,c三個整型變量來存儲用戶戶輸入3個值。
看程序實現:
#include <stdio.h> int main() { int a = 0, b = 0, c = 0; while( (a * b *c < 1 && (a<1 || b<1 || c<1)) &&( scanf("%d%d%d", &a, &b, &c ) <= 3)) { fflush(stdin); }; printf("%d %d %d\n", a, b, c);scanf函數返回值為int型。如果a和b都被成功讀入,那麽scanf的返回值就是2; 如果只有a被成功讀入,返回值為1; 如果a和b都未被成功讀入,返回值為0; 如果遇到錯誤或遇到end of file,返回值為EOF。end of file為Ctrl+z 或者Ctrl+dreturn 0; }
靈活運用scanf的返回值可以使用用戶輸入的數據更有效,不會因為輸入時出現錯誤而導致整個程序不能運行。
使用while循環獲取用戶輸入,當不符合條件時,再次獲取數據。直到用戶輸入的數據有效再停止,
在循環讀取中,使用 fflush(stdin)刷新標準輸入緩沖區,把輸入緩沖區裏的東西丟棄
註:一個好的算法設計要保證程序的魯棒性強,有時能在數據有瑕疵的情況下仍能給出正確結果。
scanf控制用戶輸入數據的合法範圍_算法_c語言