2016-10-22 38 views

回答

2

The scanf and fscanf functions工作完全一樣。然而你的格式是錯誤的。

嘗試改爲"\"%[^\"]\""作爲您的格式。

第一個也是最後一個"是標記字符串的開始和結束。在字符串內部,不能使用普通的雙引號,因爲這會結束字符串。所以這些必須使用反斜槓進行轉義。

如果格式字符串分解成三個主要組成部分:

  • \" - 這符合字面雙引號
  • %[^\"] - 這是一個字符串包含雙引號(匹配否定是^做什麼)
  • 最後\"再次,以符合您輸入的最終報價
+2

這基本上沒問題;這些筆記是挑剔的。我不確定是否值得注意的是(使用這種格式字符串)無法知道終端雙引號是否匹配 - 「scanf()」不會告訴您。其他格式可以。 '%[^ \「]'模式容易受到緩衝區溢出的影響;如果沒有結束雙引號,它將掃描文件的其餘部分,換行符,空格和所有內容。否則掃描集合,如果變量是'char buffer [256];'),應用適當的長度限制可能是個好主意(例如'%255 [^ \「\ n]')。 –

相關問題