歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

scanf易錯點解析

scanf易錯點解析   一、回車也被獲取了 例:        char a;        while(1)        {               scanf("%c",&a);               printf("getchar : %d\n", (int)a);        } 輸入: 1234 結果: get char : 49   //1 get char : 50   //2 get char : 51   //3 get char : 52   //4 get char : 10   //\n(換行) [解析: scanf獲取字符時是一個一個獲取的,當輸入1234和一個回車鍵,總共5字符,所有分別取出這五個字符]   二、嚴格匹配字符串 scanf("1123%s",&str); [輸入:1123aaabb時str為 aaabb,但是,輸入 24aabbdd時,會出錯,因為1123必須進行]   三、避免回車被自動獲取 例: char a,b; scanf("%c", &a); scanf("%c", &b);   //scanf("  %c", &b); printf("a = 0x%d\nb = 0x%d\n", (int)a, (int)b); 輸入: 輸入1後回車。 結果: a = 0x49 b = 0x10 [解析: 原因是a取了1,b取了\n %c的前面必須有一個空格,否則系統會將你前面輸入別的值之後鍵入的回車符讀入該變量,造成死循環。當然,如果scanf("%c",&b)是第一條讀入語句,就可以不需要空格。]   四、限定讀取字符串大小 例: char *p, str[20]; scanf("10%s", p); scanf("%s", str); [解析: 一旦輸入字符個數大於10,p就不再繼續讀入,而後面的一個讀入函數即scanf("%s", str)就會從第11個字符開始讀入。]   五、清空鍵盤緩沖區 fflush(stdin); [解析: 清楚掉鍵盤緩沖區]
Copyright © Linux教程網 All Rights Reserved