2

我正在寻找一个函数来检查字符串是否遵循(完全匹配)由对应于format字符串的附加参数指定的数据模式,如下所示:

/* int strcmpf (char *str1, char *format, ...); */
char *test = "Hello World !"

if(!strcmpf(test, "%s%*s %c", "Hello ", '!')
    return HELLO_HAS_BEEN_SAID;
else
    return PROGRAM_ISNT_POLITE;

我认为自己实现这个会非常困难,但这样的功能对于内容的语义解析可能非常有用。在我尝试自己编写这样的函数之前,我需要知道是否已经有一个库或代码片段提供了这样的函数的实现?


更具体地说,我需要模式匹配行为。所以test必须与参数对应的数据所指定的模式完全匹配format

4

1 回答 1

3

我需要知道是否已经有一个库或代码片段提供了这样的函数的实现

标准库没有这样的功能。对第三方库建议的请求在这里是题外话,但就我了解您想要的功能而言,我无论如何都不知道现有的第三方实现。

正如我在评论中所说,我建议您围绕真正的正则表达式设计模式匹配方面,而不是围绕printf()scanf()格式(它们并不完全相同)。有几个正则表达式库可用于支持该部分。

于 2016-08-05T13:41:41.973 回答