Den Index eines Zeichens in einem String mit C finden
Bei der Arbeit mit Strings in C ist es nicht ungewöhnlich, den Index eines bestimmten Zeichens innerhalb dieses Strings wissen zu wollen. Traditionelle Suchmethoden mit der Funktion strstr
geben Ihnen den Zeiger auf, wo das Zeichen gefunden wurde, aber wenn Sie speziell nach der Position dieses Zeichens suchen, könnten Sie ratlos sein. Glücklicherweise gibt es eine Lösung! Lassen Sie uns erkunden, wie Sie den Index eines Zeichens in einem String mithilfe der Funktion strcspn
genau bestimmen können.
Das Problem verstehen
In der C-Programmierung kann die Manipulation von Strings manchmal kompliziert werden. Wenn Sie ein bestimmtes Zeichen in einem String finden und dessen Position anstelle eines Zeigers wünschen, fragen Sie sich vielleicht, welche Werkzeuge in der Standardbibliothek verfügbar sind. Sie sind möglicherweise mit Funktionen wie strstr
vertraut, die einen Zeiger auf das erste Vorkommen eines Teilstrings zurückgibt, aber das sagt Ihnen nicht direkt etwas über den Index eines einzelnen Zeichens.
Die Lösung: Verwendung von strcspn
Die Funktion strcspn
ist tatsächlich sehr hilfreich, um den Index eines Zeichens innerhalb eines Strings zu finden. So funktioniert sie:
Was ist strcspn
?
strcspn
ist eine Funktion der Standardbibliothek, die in string.h
definiert ist. Sie berechnet die Länge des anfänglichen Segments von str1
, das nur aus Zeichen besteht, die nicht in str2
gefunden werden. Das bedeutet, dass sie den Index des ersten Vorkommens eines beliebigen Zeichens, das in str2
definiert ist, innerhalb von str1
zurückgibt.
Funktionsprototyp
size_t strcspn (const char * str1, const char * str2);
Praktisches Beispiel
Hier ist ein praktisches Beispiel dafür, wie Sie strcspn
verwenden können, um den Index eines Zeichens in einem String zu finden:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] = "fcba73"; // Der String, in dem wir suchen
char keys[] = "1234567890"; // Die Zeichen, die wir suchen
int i;
// Den Index des ersten Zeichens aus keys in str finden
i = strcspn(str, keys);
// Die Position ausgeben, 1 hinzufügen, um von nullbasierter zu einbasierter Indizierung zu konvertieren
printf("Die erste Zahl in str befindet sich an der Position %d.\n", i + 1);
return 0;
}
Erklärung des Codes
- Wir inkludieren die notwendigen Header-Dateien:
stdio.h
für Ein-/Ausgabefunktionen undstring.h
für Stringmanipulationsfunktionen. - Wir definieren unseren String
str
und die Zeichen, nach denen wir inkeys
suchen möchten. - Der Aufruf von
strcspn(str, keys)
gibt den Index (nullbasiert) des ersten Vorkommens eines beliebigen Zeichens auskeys
zurück, das instr
gefunden wurde. - Schließlich wird das Ergebnis ausgegeben, wobei für benutzerfreundliche Ausgaben (einbasierte Indizierung) angepasst wird.
Wichtige Erkenntnisse
strcspn
ist hervorragend geeignet, um den Index des ersten Vorkommens von Zeichen zu finden.- Es ist notwendig, die Ausgabe für eine benutzerfreundliche Indizierung anzupassen.
Fazit
Den Index eines Zeichens in einem String zu finden, kann einfach mit der Funktion strcspn
erreicht werden. Diese Funktion hilft Ihnen, nahtlos zu bestimmen, wo ein Zeichen innerhalb eines Strings erscheint, was eine bessere Manipulation von Strings in Ihren C-Programmen ermöglicht. Probieren Sie es bei Ihrem nächsten Programmierprojekt aus und sehen Sie, wie es Ihre String-Suchaufgaben vereinfacht!