Wie überprüft man, ob ein String mit einem anderen String in C beginnt?
Gibt es so etwas wie startsWith(str_a, str_b)
in der standard-C-Bibliothek?
Sollte es dauern, Zeiger, um zwei strings mit nullbytes, und sagen Sie mir, ob der erste scheint auch ganz am Anfang von der zweiten.
Beispiele:
"abc", "abcdef" -> true
"abcdef", "abc" -> false
"abd", "abdcef" -> true
"abc", "abc" -> true
InformationsquelleAutor der Frage thejh | 2011-01-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend gibt es keine standard-C-Funktion für diese. Also:
Beachten Sie, dass die oben genannten ist schön und klar, aber wenn Sie es tun, in einer engen Schleife oder arbeiten mit sehr große Zeichenfolgen, es ist vielleicht nicht bieten die beste Leistung, als es durchsucht die gesamte Länge der beiden strings vorne (
strlen
). Lösungen wie wj32 ist oder Christoph kann bieten bessere Leistung (obwohl dieser Kommentar über Vektorisierung ist jenseits meiner ken von C). Beachten Sie auch Fred Foo Lösung vermeidetstrlen
aufstr
(er hat Recht, es ist unnötig). Nur Angelegenheiten, die für (sehr) große Zeichenfolgen oder wiederholte Verwendung in engen Schleifen, aber wenn es darauf ankommt, ist es wichtig.InformationsquelleAutor der Antwort
Gibt es keine standard-Funktion dafür, aber Sie können definieren,
Haben wir nicht zu befürchten
str
wird kürzer alspre
denn laut C-standard (7.21.4.4/2):InformationsquelleAutor der Antwort Fred Foo
Ich würde wahrscheinlich gehen mit
strncmp()
aber nur zum Spaß ein raw-Umsetzung:InformationsquelleAutor der Antwort Christoph
Ich bin kein Experte im schreiben eleganten code, aber...
InformationsquelleAutor der Antwort wj32
Verwenden
strstr()
Funktion.Stra == strstr(stra, strb)
InformationsquelleAutor der Antwort gscott
Ran weil ich die version akzeptiert und hatte ein problem mit einer sehr langen str, ich musste fügen Sie in der folgenden Logik:
InformationsquelleAutor der Antwort Jordan
Optimiert (v. 2. - korrigiert):
InformationsquelleAutor der Antwort Zloten
Optimiert:
InformationsquelleAutor der Antwort toettö