1
作爲一個例子,我有一個包括該文本的文本文件:"name?"
C:忽略一個特定的字符,而使用的fscanf
我要救只能作爲name?
我試圖("%["]")
這個字符串,但這不起作用。
我應該使用哪個函數?
作爲一個例子,我有一個包括該文本的文本文件:"name?"
C:忽略一個特定的字符,而使用的fscanf
我要救只能作爲name?
我試圖("%["]")
這個字符串,但這不起作用。
我應該使用哪個函數?
The scanf
and fscanf
functions工作完全一樣。然而你的格式是錯誤的。
嘗試改爲"\"%[^\"]\""
作爲您的格式。
第一個也是最後一個"
是標記字符串的開始和結束。在字符串內部,不能使用普通的雙引號,因爲這會結束字符串。所以這些必須使用反斜槓進行轉義。
如果格式字符串分解成三個主要組成部分:
\"
- 這符合字面雙引號%[^\"]
- 這是一個字符串不包含雙引號(匹配否定是^
做什麼)\"
再次,以符合您輸入的最終報價
這基本上沒問題;這些筆記是挑剔的。我不確定是否值得注意的是(使用這種格式字符串)無法知道終端雙引號是否匹配 - 「scanf()」不會告訴您。其他格式可以。 '%[^ \「]'模式容易受到緩衝區溢出的影響;如果沒有結束雙引號,它將掃描文件的其餘部分,換行符,空格和所有內容。否則掃描集合,如果變量是'char buffer [256];'),應用適當的長度限制可能是個好主意(例如'%255 [^ \「\ n]')。 –