1
作为一个例子,我有一个包括该文本的文本文件:"name?"
C:忽略一个特定的字符,而使用的fscanf
我要救只能作为name?
我试图("%["]")
这个字符串,但这不起作用。
我应该使用哪个函数?
作为一个例子,我有一个包括该文本的文本文件:"name?"
C:忽略一个特定的字符,而使用的fscanf
我要救只能作为name?
我试图("%["]")
这个字符串,但这不起作用。
我应该使用哪个函数?
The scanf
and fscanf
functions工作完全一样。然而你的格式是错误的。
尝试改为"\"%[^\"]\""
作为您的格式。
第一个也是最后一个"
是标记字符串的开始和结束。在字符串内部,不能使用普通的双引号,因为这会结束字符串。所以这些必须使用反斜杠进行转义。
如果格式字符串分解成三个主要组成部分:
\"
- 这符合字面双引号%[^\"]
- 这是一个字符串不包含双引号(匹配否定是^
做什么)\"
再次,以符合您输入的最终报价
这基本上没问题;这些笔记是挑剔的。我不确定是否值得注意的是(使用这种格式字符串)无法知道终端双引号是否匹配 - “scanf()”不会告诉您。其他格式可以。 '%[^ \“]'模式容易受到缓冲区溢出的影响;如果没有结束双引号,它将扫描文件的其余部分,换行符,空格和所有内容。否则扫描集合,如果变量是'char buffer [256];'),应用适当的长度限制可能是个好主意(例如'%255 [^ \“\ n]')。 –