是否存在某种'strcmpf'实现?
问题描述:
我要找来检查,如果一个字符串如下功能(完全一致),对应format
串 像这样由其他参数指定的数据的模式:是否存在某种'strcmpf'实现?
/* 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
参数的数据指定的模式。
答
我需要知道,如果已经有一个库或代码片段,提供实现的功能的这样
标准库有没有这样的功能。对于第三方库建议的请求在这里是无关紧要的,但就我理解您所需的功能而言,我无论如何都不了解现有的第三方实施。
正如我在评论中说,我建议你设计围绕模式匹配方面善意正则表达式,而不是围绕printf()
或scanf()
格式(这是不完全一样)。有几个正则表达式库可用于支持该部分。
实现这样的功能非常简单,只需使用['vsnprintf'](http://en.cppreference.com/w/c/io/vfprintf)进行格式化,然后调用'strcmp'。 –
@JoachimPileborg完全正确,但是如果我必须将它放在函数中,并且调用了'strcmp()',我仍然需要为该函数提供可变参数。对于每个人来说,这不是“非常简单”,你不同意吗?至少对我来说似乎不实际.. – Malina
@JoachimPileborg:现在是什么? “世界”来自您提出的解决方案的地方在哪里? –