C語言中正確使用輸入函式scanf

2021-06-29 16:20:18 字數 963 閱讀 7628

c語言中輸入函式scanf使用不當,會出現各種錯誤,正確使用,會提高效率,現把一些注意事項,正確的使用方法和經驗分享給大家.

在c語言中空白字元括:空格、換行(\n)、回車(\r)、水平製表符(\t)、換頁符(\f)、垂直製表符(\v)。在scanf讀取的乙個引數是數時,開始輸入的空白字元會被忽略,讀取數字直到遇到第一字元不是數字就會停止;讀取字串時,開始的空白字元也會被忽略掉,讀取字元【0-9a-za-z....](各種可顯示字元),直到遇到不是字元停止匹配,(包括空白字元,通常為回車換行),並且在字串尾新增空字元,(空字元是字串輸出結束字元).scanf遇到停止字元時,把停止字元還放入鍵盤字元快取區中。舉例如下:

#include "stdio.h"

#include "conio.h"

main()

如果輸入.......123.......hello...\r\n(.為空白字元)

那麼結果:a = 123  x[20] = "hello" x[5]=空字元

如果在格式字串中包含空白字元時,乙個或多個連續空白字元貪婪匹配空白字元直到遇到第乙個不是空白字元;格式字串中包含可顯字元時,那麼精確匹配。如果不匹配,把第乙個不匹配的字元放入輸入流中,異常退出。例如:

把上面的改為scanf("%dabc%s",&a,x);

輸入.......123abc.......hello...\r\n(.為空白字元),結果同上。如果輸入了

.......123ab.......hello...\r\n(.為空白字元) 那麼結果:a=123,字元陣列是亂碼。

還有一種情況:當此次輸入結束時,不管正確與否,都要重新整理快取區,否則有滯留字元干擾下一次的輸入。fflush(stdin);rewind(stdin);都可以清空輸入流快取區。希望大家多做實驗,這樣經驗多一點,出錯的機率就小一點。謝謝大家!

C語言中正確使用const

以前竟然不知道c語言中可以使用const關鍵字,慚愧啊!看到一篇不錯的文章,到此。出處是http www.yesky.com 356 1854856.shtml.基本解釋 const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的健壯性,另外,在 別人 的時...

C語言中正確使用const

基本解釋 const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程度上可以提高程式的健壯性,另外,在 別人 的時候,清晰理解const所起的作用,對理解對方的程式也有一些幫助。雖然這聽起來很簡單,但實際上,const的使用也是c語言中乙個比較微妙的地方,微妙在何處呢?請看下...

在 Go 語言中,正確的使用併發

glyph lefkowitz最近寫了一篇 啟蒙文章 其中他詳細的說明了一些關於開發高併發軟體的挑戰,如果你開發軟體但是沒有閱讀這篇問題,那麼我建議你閱讀一篇。這是一篇非常好的文章,現代軟體工程應該擁有的豐富智慧型。從多個花絮中提取,但是如果我斗膽提出主要觀點的總結,其內容就是 搶占式多工和一般共享...