scanf函数的真正用法?
看视频上老师说scanf函数中的格式控制符(%d、%f、%s)的目的是,将你从键盘所输入的字符按格式控制符的类型存储。但我认为系统为什么不统一存储,然后根据printf函数中的格式控制符输出呢?
這不是輸出,而是輸入,scanf()函數不知道用戶將以何種文本形式提交所需的數據,故事先假設應得到如格式控制符那樣的格式文本。比如,預期輸入一個整數,當設置%d格式約定之後,那麽即使用戶敲入了一個帶小數點的浮點數,它也不會去理會小數點及其之後的東西了,它就認整數格式的,更有甚者,如你設置%4d,它就死板地只處理4個字符的整數格式,若你輸入了6個字符,後面多出來的2個留給下一個scanf()數據去讀。
再如,預期輸入一個字符串%s,那麽,即使你輸入了123.45這樣看起來是數值的文本,scanf()也會將這串文本原封不動地以字符串形式接收下來。但若非%s,而是%f,則它會將這個字符串轉換成真正的數值。
現在知道格式控制符有什麽用了?其實,要真正透徹地了解這些東西有什麽用,莫如親自動手寫一個自己的scanf()函數,就知道這些考慮幹嘛用、爲什麽會這樣的了。
[ 本帖最后由 TonyDeng 于 2011-7-21 23:51 编辑 ]