方括号如何在sscanf中起作用?

时间:2017-06-09 11:46:12

标签: c scanf

我正在尝试用where:{ field1: 'value1', field2: 'value2', $and:[ Sequelize.where( Sequelize.literal('"tableName"."jsonbColumn"->>\'keyInsideJSONB\''), valueWhichYouWantToMatch ), Sequelize.where( Sequelize.literal('"tableName"."jsonbColumn"->"nestedJsonKey"->>\'keyInsideNestedJSONBKey\''), nestedValueWhichYouWantToMatch ) ] } 读取由整数和带引号的字符串组成的行。 我的格式化字符串类似于sscanf"\"%m[^\"]s\" , %x"在引号内给出一个字符串,但不在第二个字段中给出其余的输入。我也尝试了sscanf,因此结束引用应该进入"\"%m[^\"]s%c"%c再次只给出一个字段。只有sscanf才有效,而%s却没有。

1 个答案:

答案 0 :(得分:2)

假设输入字符串为"\"Hello there\", 32",那么这就是sscanf()使用格式化字符串"\"%m[^\"]s\" , %x"读取它的方式:

    格式化字符串中的
  • \"与输入中的\"匹配(并将其丢弃)。
  • %m[^\"] 1 Hello there匹配。
  • 格式字符串中的
  • s\"不匹配,因此扫描结束。

您要使用的格式字符串是"\"%m[^\"]\" , %x"

有关sscanf()及其格式字符串的详情,请阅读http://en.cppreference.com/w/c/io/fscanf和/或the man page

1 请注意,m修饰符不是标准C(即使它是`POSIX标准的一部分)。