Verwendung und Implementierung von strpbrk in C

Verwendung und Implementierung von strpbrk in C

Die Funktion strpbrk scannt die Zeichenfolge s1 und findet das erste Zeichen in der Zeichenfolge s1, das mit einem beliebigen in der Zeichenfolge s2 angegebenen Zeichen übereinstimmt. Die Suche umfasst nicht die abschließenden Nullzeichen der beiden Zeichenfolgen, sondern endet dort.

Syntax strpbrk in C:

//General Syntax of strpbrk

char *strpbrk(const char *s1, const char *s2);

Parameter:

s1— Die zu scannende nullterminierte Zeichenfolge.

s2— Die nullterminierte Zeichenfolge, die die zu vergleichenden Zeichen enthält.

Zurück:

Die Funktion strpbrk gibt einen Zeiger auf das Zeichen zurück, oder einen Nullzeiger, wenn kein Zeichen aus s2 in s1 vorkommt.

Sehen wir uns einen Beispielcode an, um die Funktionalität von strpbrk in C zu verstehen. In diesem C-Code versuche ich, den ersten Vokal in der Zeichenfolge s1 zu finden und das Zeichen von s1 zu finden, das sich in s2 mit Hilfe der strpbrk-Zeichenfolgenfunktion befindet.

#include <stdio.h>
#include <string.h>


int main ()
{
    char s1[] = "We Love to read Aticleworld.com";
    char s2[] = "aeiou";

    printf ("Locate first Vowels in '%s'\n",s1);

    //Call strpbrk to locate first char
    //which present in s2
    char *ptr = strpbrk (s1, s2);
    if(ptr != NULL)
    {
        printf ("First Vowel find in s1 is '%c'\n", *ptr);
    }
    else
    {
        printf("There is no Vowels in s1\n");
    }

    return 0;
}

Wenn Sie das Programm ausführen, lautet die Ausgabe:

Wichtige Punkte, die Sie wissen müssen, bevor Sie strpbrk in C:verwenden

1. Sie müssen die Header-Datei string.h einschließen, bevor Sie die Funktion strpbrk in C verwenden.

2. Das Verhalten ist undefiniert, wenn entweder s1 oder s2 kein Zeiger auf eine nullterminierte Bytefolge ist.

3. Die strpbrk-Funktion gibt null zurück, wenn kein Zeichen von s1 in s2 gefunden wird. Sehen wir uns einen Beispielcode an,

#include <stdio.h>
#include <string.h>


int main ()
{
    char s1[] = "We Love to read Aticleworld.com";
    char s2[] = "12345";

    printf ("Locate first Vowels in '%s'\n",s1);

    //Call strpbrk to locate first char
    //which present in s2
    char *ptr = strpbrk (s1, s2);
    if(ptr != NULL)
    {
        printf ("First Vowel find in s2 is '%c'\n", *ptr);
    }
    else
    {
        printf("There is no Vowels in s1\n");
    }

    return 0;
}

Wenn Sie das Programm ausführen, lautet die Ausgabe:

Wie implementiert man seine eigene strpbrk-Funktion?

Ihr Compiler/Ihre Standardbibliothek wird wahrscheinlich eine sehr effiziente und maßgeschneiderte Implementierung der Funktion strpbrk() haben. Wenn dies nicht erforderlich ist, vermeiden Sie es, eine eigene Version der strpbrk-Funktion zu erstellen.

Wir können die strpbrk-Funktion auf viele Arten implementieren. Hier implementieren wir strpbrk mit Hilfe der strchr-Funktion. Die strchr-Funktion gibt einen Zeiger auf das gefundene Zeichen oder einen Nullzeiger zurück, wenn das Zeichen nicht in der Zeichenfolge vorkommt. Lassen Sie uns also unsere eigene Version der Funktion strpbrk() in C erstellen.

Hinweis: Die folgende Funktion dient nur dazu, die Funktionsweise von strpbrk zu verstehen. Es gibt viele Szenarien, die in dieser Funktion nicht behandelt werden. Sie können das Szenario als Ihre Anforderung behandeln und wenn möglich dann die Standardfunktion strpbrk (Bibliotheksfunktion) verwenden.

char *my_strpbrk(const char *s1, const char *s2)
{
    //return null if any one is NULL
    if((s1 == NULL) || (s2 == NULL))
        return NULL;

    while(*s1)
    {
        //return s1 char position if found in s2
        //if not found return NULL
        if(strchr(s2, *s1))
        {
            //return from function
            //if char found in s2
            return s1;
        }
        else
        {
            s1++;
        }
    }
    return NULL;
}

Lassen Sie uns eine kleine Anwendung erstellen, um unsere eigene strpbrk()-Funktion in C zu testen.

#include <stdio.h>
#include <string.h>


char *my_strpbrk(const char *s1, const char *s2)
{
    //return null if any one is NULL
    if((s1 == NULL) || (s2 == NULL))
        return NULL;

    while(*s1)
    {
        //return s1 char position if found in s2
        //if not found return NULL
        if(strchr(s2, *s1))
        {
            //return from function
            //if char found in s2
            return s1;
        }
        else
        {
            s1++;
        }
    }
    return NULL;
}


int main ()
{
    char s1[] = "We Love to read Aticleworld.com";
    char s2[] = "aeiou";

    printf ("Locate first Vowels in '%s'\n",s1);

    //Call my_strpbrk to locate first char
    //which present in s2
    char *ptr = my_strpbrk (s1, s2);
    if(ptr != NULL)
    {
        printf ("First Vowel find in s1 is '%c'\n", *ptr);
    }
    else
    {
        printf("There is no Vowels in s1\n");
    }

    return 0;
}

Wenn Sie das Programm ausführen, lautet die Ausgabe:

Empfohlene Artikel für Sie:

  • Beste Geschenke für Programmierer und Technikfreaks.
  • Implementierung und Verwendung von memset von in C
  • Benutze und erstelle strcspn in der Programmierung.
  • Verwendung von memchr in der C-Programmierung.
  • strrchr in der C-Programmierung.
  • strchr in der C-Programmierung.
  • Wie man strncpy() verwendet und eigene strncpy() implementiert.
  • Wie übergebe ich ein Array als Parameter?
  • Eigenes Atoi in C implementieren.
  • Die 10 besten C-Programmierbücher.
  • Die beste Maus für einen Programmierer.
  • Dangling-, Void-, Null- und Wild-Zeiger
  • Speicherlayout in C.
  • Dateiverwaltung in C, in wenigen Stunden.