strstr Funktion, die zwischen Groß/Kleinschreibung nicht unterscheidet
-
Gibt es so was? Oder kann man sich so etwas ohne viel Aufwand basteln? Müssen nicht gleich PCRE sein
-
du kannst den string vorher durchgehen und alle Buchstaben in Groß- oder Kleinbuchstaben umwandeln..
-
Phillemann schrieb:
Gibt es so was? Oder kann man sich so etwas ohne viel Aufwand basteln? Müssen nicht gleich PCRE sein
Wie DocJunioR sagte ist es moeglich, entweder du machst dies per Hand, oder du nutzt die schon
vorhandenen Funktionen. Schau dir dazu mal die Funktionen toupper und tolower anmfg
v R
-
Hmmm, etwas langsam, erst ne Kopie erstellen, dann alles klein machen, strstr'n und dann auf den anderen String anwenden.
-
Phillemann schrieb:
Hmmm, etwas langsam, erst ne Kopie erstellen, dann alles klein machen, strstr'n und dann auf den anderen String anwenden.
So macht man das ja auch nicht. Man kann die Zeichen untereinander vergleichen und die Groß-/Kleinschreibung beachten. Diese Version funktioniert z.B. auf ASCII Systemen:
char *StrStr(char *cs, char *ct) { while (*cs) { char *x = cs, *y = ct; while ((*x & 31) == (*y & 31) && *y) ++x, ++y; if (*y == '\0') return cs; ++cs; } return NULL; }
Es kann sein, dass noch ein Fehler drin steckt; Ich hab's nicht 100% getestet!
-
Kann man da nicht einfach strcasecmp benutzen?
-
Doch, nach POSIX kannst Du das schon benutzen. Es macht allerdings nicht das Geforderte. Manchmal existiert strcasestr.
-
Es macht allerdings nicht das Geforderte.
Verstehe ich nicht. Gesucht war doch eine Funktion, die nicht zwischen Groß- und Kleinschreibung unterscheidet.
Laut manpage macht strcasecmp
DESCRIPTION
`strcasecmp' compares the string at A to the string at B in a case-
insensitive manner.Hast aber Recht: Ist POSIX, also wohl nicht überall vorhanden.
/Dirk
-
Also ich finde nirgendwo etwas von strcasecmp.
-
Dirk Schnelle schrieb:
Gesucht war doch eine Funktion, die nicht zwischen Groß- und Kleinschreibung unterscheidet.
Ja, aber das war nicht alles. Sie sollte sich verhalten wie strstr, also einen String in einem anderen suchen. strcasecmp verhält sich so wie strcmp; das sucht nicht, das vergleicht einfach nur.
-
Ja tatsächlich! Habe ich glatt überlesen!
Shit happens!