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 und string.h für Stringmanipulationsfunktionen.
  • Wir definieren unseren String str und die Zeichen, nach denen wir in keys suchen möchten.
  • Der Aufruf von strcspn(str, keys) gibt den Index (nullbasiert) des ersten Vorkommens eines beliebigen Zeichens aus keys zurück, das in str 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!