1
我正在尋找通過stdin
和scanf()
從用戶的幾個數據點中讀取。多個輸入格式與scanf
然而,如果用戶希望指示無效數據,由*
表示,這將違反預期的格式(%f
,%d
等),並按照我的理解,導致scanf()
返回一個錯誤。
我設想處理這個問題的方法是從stdin
讀取輸入作爲一系列字符串,檢查它們是否爲*
,然後處理這個問題。這看起來很幼稚和混亂,我想知道是否有一個更清晰的方法來實現這一點。
請注意,我的工作環境非常有限,因此POSIX /第三方解決方案不適用。 ANSI C只:(
您需要將輸入讀入緩衝區並嘗試解析它一再重複,直到你成功。有很多關於這樣做的理論,通常在「編譯器」課程中介紹。如果你不想走這條路線,你可以使用'fgets'或'getline'將輸入讀入緩衝區,然後處理幾次,看看它是如何工作的,但它會變得複雜和緩慢除非只有有限數量的可能的正確解析,否則匆忙。 – dmckee 2013-02-18 20:46:51
一個字:'fgets()'。 (好吧,也許兩個'strchr()'也適用。) – 2013-02-18 21:46:10
不要使用'scanf'。 http://www.c-faq.com/stdio/scanfprobs.html – jamesdlin 2013-02-18 22:50:50