所以我必須讓scanf讀取由空格分隔的幾個字符串。然而,事先並不知道需要讀取多少個字符串,它可以是1到5之間的任意值,但我似乎無法讓scanf在輸入輸入後停止嘗試讀取。我曾嘗試過這樣天真的%s %s %s %s %s
,但正如你可以想象的,在打了一個或兩個單詞之後按下回車鍵之後,它仍然希望閱讀更多內容,然後我也嘗試去做%s%*[^\n]%s%*[^\n]%s%*[\n]%s%*[\n]%s%*[^\n]
,這樣它會在換行符後嘗試停止,但是那也沒用。scanf可選匹配
那麼讓scanf能夠擁有一些可選輸入部分的最佳方法是什麼?
謝謝。
編輯:我知道的strtok並與fgets我只是想看看是否有一種方式與scanf函數
好這就是我可能要做的事情,我只是想知道是否有辦法像這樣做。 – csteifel 2012-02-16 19:26:56
@legion那麼*可能*是一種方式,但使用'scanf'本質上是不可靠的。你對用戶輸入的內容沒有太多的控制。另一方面,當你使用'fgets'時,你將所有的字符串放在一個緩衝區中,你可以完全自由地解析它,因爲你看不到'scanf'。 – cnicutar 2012-02-16 19:28:36