2016-10-22 45 views

回答

2

The scanf and fscanf functions工作完全一样。然而你的格式是错误的。

尝试改为"\"%[^\"]\""作为您的格式。

第一个也是最后一个"是标记字符串的开始和结束。在字符串内部,不能使用普通的双引号,因为这会结束字符串。所以这些必须使用反斜杠进行转义。

如果格式字符串分解成三个主要组成部分:

  • \" - 这符合字面双引号
  • %[^\"] - 这是一个字符串包含双引号(匹配否定是^做什么)
  • 最后\"再次,以符合您输入的最终报价
+2

这基本上没问题;这些笔记是挑剔的。我不确定是否值得注意的是(使用这种格式字符串)无法知道终端双引号是否匹配 - “scanf()”不会告诉您。其他格式可以。 '%[^ \“]'模式容易受到缓冲区溢出的影响;如果没有结束双引号,它将扫描文件的其余部分,换行符,空格和所有内容。否则扫描集合,如果变量是'char buffer [256];'),应用适当的长度限制可能是个好主意(例如'%255 [^ \“\ n]')。 –

相关问题