Zum Hauptinhalt springen

Wie kann ich herausfinden, wie oft eine Teilzeichenfolge in einer Zeichenkette in C-Sprache vorkommt?

Eine der häufigsten Aufgaben bei der Arbeit mit Textdaten besteht darin, die Anzahl der Vorkommen einer Teilzeichenfolge in einer Zeichenfolge zu zählen. In diesem Artikel werden wir uns ansehen, wie dieses Problem in der C-Programmiersprache gelöst werden kann.

Zuerst definieren wir, was wir als Teilzeichenfolge und String betrachten. Eine Teilzeichenfolge ist eine Folge von Zeichen, die innerhalb einer Zeichenfolge gefunden werden kann. Eine Zeichenfolge ist eine Folge von Zeichen, die wir auf das Vorhandensein einer Teilzeichenfolge überprüfen möchten.

In der C-Sprache gibt es mehrere Möglichkeiten, dieses Problem zu lösen. Eine davon ist die Verwendung einer Funktion strstr(). Diese Funktion findet das erste Vorkommen einer Teilzeichenfolge in einer Zeichenfolge und gibt einen Zeiger auf diese Teilzeichenfolge zurück. Wenn keine Teilzeichenfolge gefunden wird, gibt die Funktion NULL zurück.

Sie können eine Schleife verwenden, um die Anzahl der Vorkommen einer Teilzeichenfolge in einer Zeichenfolge zu zählen. Bei jeder Iteration rufen wir die Funktion auf strstr() Wenn Sie den Rest der Zeile an sie übergeben, und wenn das Ergebnis nicht NULL ist, erhöhen wir den Zähler.

Anzahl von Teilstring-Terminen in Zeile C

Eine der einfachsten Möglichkeiten, die Anzahl der Vorkommen einer Teilzeichenfolge in einer Zeichenfolge zu bestimmen, besteht darin, die Funktion strstr() zu verwenden. Die Funktion strstr() gibt einen Zeiger auf das erste Vorkommen einer Teilzeichenfolge in einer Zeichenfolge zurück. Um die Anzahl der Vorkommen einer Teilzeichenfolge zu berechnen, können Sie eine Schleife verwenden, die die Funktion strstr() für jedes gefundene Vorkommen aufruft und den Zähler erhöht.

Beispielcode, der die Verwendung der Funktion strstr() veranschaulicht, um die Anzahl der Vorkommen der Teilzeichenfolge "abc" in die Zeichenfolge "abcfabcfabc" zu zählen:

#include #include int main() printf("Количество вхождений подстроки: %d", count);return 0;>

Nach der Ausführung dieses Codes wird die Zahl 3 ausgegeben, da die Teilzeichenfolge "abc" dreimal in der Zeichenfolge "abcfabcfabc" vorkommt.

Die Verwendung der C-Standardbibliotheksfunktionen erleichtert die Lösung des Problems, die Anzahl der Vorkommen einer Teilzeichenfolge in einer Zeichenfolge zu zählen. Beachten Sie jedoch, dass diese Lösung mögliche Überlappungen von Teilstringvorkommen nicht berücksichtigt.

Im Allgemeinen hängt die Wahl eines geeigneten Algorithmus von den Anforderungen und spezifischen Aufgabenbedingungen sowie den Einschränkungen und Besonderheiten der C-Sprache ab.

FunktionDie Beschreibung
strstr() Findet das erste Vorkommen einer Teilzeichenfolge in einer Zeichenfolge
strcasestr() Findet das erste Vorkommen einer Teilzeichenfolge in einer Zeichenfolge (Groß-/Kleinschreibung nicht berücksichtigt)
strspn() Findet die Anzahl aufeinanderfolgender Zeichen aus einer bestimmten Menge am Anfang einer Zeile
strcspn() Findet die Anzahl aufeinanderfolgender Zeichen, die nicht innerhalb der angegebenen Menge liegen, am Anfang der Zeile

Suchalgorithmus für Teilzeichenfolgen in einer Zeichenkette in C-Sprache

In der C-Programmiersprache können Sie eine standardmäßige String-Bibliothek verwenden, um nach einer Teilzeichenfolge in einer Zeichenfolge zu suchen. Wenn Sie jedoch Ihren eigenen Algorithmus implementieren möchten, können Sie den folgenden Ansatz verwenden:

1. Finden der Länge einer Zeichenfolge und eines Teilstrings:

Zunächst müssen Sie die Länge der ursprünglichen Zeichenfolge und der Teilzeichenfolge bestimmen, mit der Sie sie vergleichen möchten. Dazu können Sie die Funktionen strlen() bzw. strnlen() verwenden.

2. Zeichen vergleichen:

Der nächste Schritt besteht darin, jedes Zeichen der ursprünglichen Zeichenfolge mit den Zeichen der Teilzeichenfolge zu vergleichen. Dazu können Sie eine for-Schleife und die Funktion strncmp() verwenden, die die ersten n Zeichen zweier Strings vergleicht.

3. Umgang mit Übereinstimmungen:

Jedes Mal, wenn die zu vergleichenden Symbole übereinstimmen, erhöhen wir den Übereinstimmungszähler. Am Ende der Ausführung des Algorithmus wird die Anzahl der Übereinstimmungen in diesem Zähler enthalten sein.

4. Abschluss des Algorithmus:

Nachdem Sie den Zeichenvergleich abgeschlossen haben, können Sie die Anzahl der Übereinstimmungen zurückgeben oder sie für andere Aktionen verwenden, z. B. das Ersetzen einer gefundenen Teilzeichenfolge durch eine andere.

#include #include int countSubstring(const char* str, const char* substr) >return count;>int main()

In diesem Beispiel wird der Algorithmus zum Suchen der Teilzeichenfolge "ab" in der Zeichenfolge "abababab" veranschaulicht. Das Ergebnis der Programmausführung ist 4, da die Teilzeichenfolge "ab" viermal vorkommt.