Ich suche eine Funktion, die eine Zeichenfolge folgt überprüft, ob (Spiele genau) das Muster der Daten durch die zusätzlichen Argumente an die angegebene format
Zeichenfolge entspricht wie folgt aus:Gibt es eine Art 'strcmpf' Implementierung?
/* 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;
diese selbst implementieren Ich gehe davon wird sehr schwierig, aber eine solche Funktion könnte sehr nützlich für das semantische Parsen von Inhalten sein. Bevor ich versuche, eine solche Funktion selbst zu schreiben, muss ich wissen, ob es bereits eine Bibliothek oder ein Code-Snippet gibt, das die Implementierung einer solchen Funktion ermöglicht?
Um genauer zu sein, brauche ich Muster-Matching-Verhalten. So muss test
genau mit dem Muster übereinstimmen, das durch die Daten angegeben wird, die dem Parameter format
entsprechen.
Die Implementierung einer solchen Funktion ist sehr einfach, verwenden Sie einfach ['vsnprintf'] (http://en.cppreference.com/w/c/io/vfprintf) zum Formatieren und rufen Sie dann' strcmp' auf. –
@JoachimPileborg Ganz richtig, aber wenn ich es in eine Funktion zusammen mit einem Aufruf von 'strcmp()' setzen muss, muss ich noch variadic Argumente für die Funktion bereitstellen. Was ist nicht "sehr einfach" für alle, stimmst du nicht zu? Scheint mir nicht so praktisch zu sein .. – Malina
@JoachimPileborg: Was jetzt? Woher kommt "Welt" in Ihrer vorgeschlagenen Lösung? –