更一般地講, scanf() 的設計使用於相對結構化的, 格式整齊的輸入。設計上, 它的名稱就是來自於 ``scan formatted"。如果你注意到, 它會告訴你成功或 失敗, 但它只能提供失敗的大略位置, 至於失敗的原因, 就無從得知了。 對 scanf() 多得體的錯誤恢復幾乎是不可能的; 通常先用類似 fgets() 的函數 讀入整行, 然後再用 sscanf() 或其它技術解釋。strtol(), strtok() 和 atoi() 等函數通常有用; 參見問題 13.4。如果你真的要用任何 scanf 的變體, 你要確保檢查返回值, 以確定找到了期待的值。而使用 %s 格式的時候, 一定要 小心緩衝區溢出。
參考資料: [K&R2, Sec. 7.4 p. 159]。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)