C語言學習(3)printf和scanf

??/*******************************************************************************************************
? ? ? ? ? ? ? ? ? ? ?剛開始學習C語言,僅代表自己的學習理解,不代表觀點一定正確
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 只做學習記錄
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?有錯誤的麻煩指出,謝謝!
*********************************************************************************************************/
printf
***printf:標準格式化輸出
例:printf(“%d\n”,a);
?
***printf函數的返回值指的是被輸出的字符的數量(不包含\0)
例:int i = 43;
? ? ?printf("%d\n",printf("%d",printf("%d",i)));

當第三個printf輸出43時,返回給第二個printf的值是字符的數量,也就是兩個字符,所以輸出2,而返回到第一個printf時只有一個字符,即輸出為1
?
***在C語言中,\n作為printf刷新緩存的標識符
?


scanf
scanf:標準格式化輸入
例:scanf(“%d”,&a);
?
scanf的使用技巧
***丟棄字符
在C99標準中是這樣定義的
?


例:
?
***字符匹配
????[]可以匹配待定的字符序列,需要在scanf的第一個參數中的轉換說明符后使用
比如:char data[10]={0}; scanf(“%[xxx]”,data);
????^符號可以指定不能被匹配的字符
比如:scanf(“%[^xxx]”,data);
????-符號表示連接,可以把n個字符進行連接,用于字符匹配
比如:scanf(“%[a-z]”,data);
注意:什么是匹配,就是從第一個字符開始接收,直到接收到匹配之外的字符就結束
圖二:當輸入為數字時,系統接收到的第一個字符不是小寫字母,就不會把數字放入緩存中,
并且之后的全部丟棄,輸出就為空
?


***清除緩存
清除\n(包括\n)以前的緩存
?
