與fscanf()函數的一個問題 - 它不會跳到下一個字從文件fscanf() - 如何在讀取n個字符後跳到下一個單詞?
while(fscanf(TEXT_FILE,"%10s", str) != EOF) // reads up to 10 char into str
如果發現超過10個字符的話,它會讀取10個字符閱讀10個字符後,將它們存儲到str中,然後繼續讀取最多10個字符的同一個單詞。
我該如何指定最多讀取10個字符並跳到下一個單詞?
是否有替代方案?
謝謝!
與fscanf()函數的一個問題 - 它不會跳到下一個字從文件fscanf() - 如何在讀取n個字符後跳到下一個單詞?
while(fscanf(TEXT_FILE,"%10s", str) != EOF) // reads up to 10 char into str
如果發現超過10個字符的話,它會讀取10個字符閱讀10個字符後,將它們存儲到str中,然後繼續讀取最多10個字符的同一個單詞。
我該如何指定最多讀取10個字符並跳到下一個單詞?
是否有替代方案?
謝謝!
我已經找到了解決方案爲您提供:
while(fscanf(file, "%10s%*s", str) != EOF)
它可以在VS 2008我不知道,如果它是標準的或沒有,如果你的編譯器將支持與否。 %*s
部分將跳過當前字符串(如果它的長度大於10)直到下一個空白字符並將消耗所有空白字符。
你可能最好使用fgets()
和strtok()
,或者圍繞fgetc()
編寫一個小循環來做你想做的事。 fscanf()
是靈活的,但並不能解決所有問題。
您將不得不繼續掃描或調用fgetc
到該循環體內的丟棄緩衝區,直到該流已經消耗了該字中剩餘的所有非空白字符。
fscanf
只是在下一個單詞中掃描多達10個字符,並將文件指針留在所讀取內容的末尾,在下一次調用時它將從10個字符開始,並且知道這不是一個單詞的開始,所以它會把下一個10個字作爲一個單詞...
請參閱strtok
您可能想要做的事情。
事實上,它不僅「fscanf()」不能解決所有問題,還會產生問題。 – 2010-10-17 23:36:45