1. 程式人生 > >scanf控制用戶輸入數據的合法範圍_算法_c語言

scanf控制用戶輸入數據的合法範圍_算法_c語言

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);
    
return 0; }
scanf函數返回值為int型。如果a和b都被成功讀入,那麽scanf的返回值就是2; 如果只有a被成功讀入,返回值為1; 如果a和b都未被成功讀入,返回值為0; 如果遇到錯誤或遇到end of file,返回值為EOF。end of file為Ctrl+z 或者Ctrl+d

靈活運用scanf的返回值可以使用用戶輸入的數據更有效,不會因為輸入時出現錯誤而導致整個程序不能運行。

使用while循環獲取用戶輸入,當不符合條件時,再次獲取數據。直到用戶輸入的數據有效再停止,

在循環讀取中,使用 fflush(stdin)刷新標準輸入緩沖區,把輸入緩沖區裏的東西丟棄

註:一個好的算法設計要保證程序的魯棒性強,有時能在數據有瑕疵的情況下仍能給出正確結果。

scanf控制用戶輸入數據的合法範圍_算法_c語言