Advanced   Java   Services Stringfunctions in string.h Back Next Up Home


Stringfunctions in string.h



Stringlänge
size_t strlen ( const char* str ) Get string length
Kopieren
char* strcpy ( char* dest, const char* source ) Kopiert source nach dest (keine Prüfungen)
char* strncpy ( char* dest, const char* source, size_t num ) Kopiert die ersten num Zeichen von source nach dest (keine Prüfungen)
Stringverkettung
char* strcat ( char* dest, const char* source ) Appends a copy of the source string to the dest string, plus a terminating null
char* strncat ( char* dest, const char* source, size_t num ) Appends the first num characters of source to dest, plus a terminating null
Stringvergleich
int strcmp ( const char* str1, const char* str2 ) Compare two strings
int strncmp ( const char* str1, const char* str2, size_t num ) Compares up to num characters of the C string str1 to those of the C string str2.
Suchen in Strings
char* strchr ( const char* str, int ch ) Locate first occurrence of character ch in string str
char* strrchr ( const char* str, int ch ) Locate last occurrence of character ch in string str
char* strstr ( const char* str1, const char* str2 ) Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1.
size_t strspn ( const char* str1, const char* str2 ) Returns the length of the initial portion of str1 which consists only of characters that are part of str2. The search does not include the terminating null-characters of either strings, but ends there.
size_t strcspn ( const char* str1, const char* str2 ) Scans str1 for the first occurrence of any of the characters that are part of str2, returning the number of characters of str1 read before this first occurrence.
char * strpbrk ( const char* str1, const char str2 ) Returns a pointer to the first occurrence in str1 of any of the characters that are part of str2, or a null pointer if there are no matches.
Weitere
char * strtok ( char * str, const char * delimiters ) Split string into tokens
char * strerror ( int errnum ) Get pointer to error message string

Es folgen einige Beispiele mit den nicht offensichtlich arbeitenden Funktionen.


strspan

Die Funktion sucht ob der erste übergebenene String mit Zeichen aus dem zweiten übergebenen String beginnt. Es wird die Anzahl der gefundenen Zeichen zurückgegeben. Das folgende Beispiel verdeutlicht die Funktionsweise.

void strspndemo()
{
   puts("strspndemo");
   char* str = "oieaxxxxiouAEIOU";
   char* vowels = "aeiouAEIOU";
   int i = strspn(str, vowels);
   printf("Die Zeichenkette '%s' beginnt mit %d Vokalen.\n", str, i);
   str = "wrzlbrmpft";
   vowels = "aeiouAEIOU";
   i = strspn(str, vowels);
   if (i == 0)
      printf("Die Zeichenkette '%s' beginnt nicht mit Vokalen.\n", str);
}

Die Ausgabe:

strspndemo
Die Zeichenkette 'oieaxxxaeiouAEIOUxx' beginnt mit 4 Vokalen.
Die Zeichenkette 'wrzlbrmpft' beginnt nicht mit Vokalen.

strcspan

Die Funktion untersucht ob der erste übergebenene String Zeichen aus dem zweiten übergebenen String enthält. Es wird die Anzahl der Zeichen gezählt die vor der ersten Fundstelle auftreten.

void strcspndemo()
{
   puts("strcspndemo");
   char* str = "xxxxxeaxxiouAEIOU";
   char* vowels = "aeiouAEIOU";
   int i = strcspn(str, vowels);
   printf("In der Zeichenkette '%s' stehen vor den ersten Vokalen %d Nichtvokale.\n", str, i);
   str = "wrzlbrmpft";
   vowels = "aeiouAEIOU";
   i = strcspn(str, vowels);
   if (i == strlen(str))
      printf("Die Zeichenkette '%s' enthält keine Vokale.\n", str);
}

Die Ausgabe:

strcspndemo
In der  Zeichenkette 'xxxxxeaxxiouAEIOU' stehen vor den ersten Vokalen 5 Nichtvokale.
Die Zeichenkette 'wrzlbrmpft' enthält keine Vokale.

strpbrk

Diese Funktion durchsucht einen String nach Zeichen, die in einem zweiten String stehen. Die Funktion gibt einen Zeiger auf das erste gefundene Zeichen zurück. Die Funktion wird dann solange aufgerufen, bis keine Zeichen mehr gefunden werden. In diesem Fall wird NULL zurückgegeben.

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

int main(void)
{
   puts("strpbrk");

   char* str = "Ein Satz in dem alle Umlaute vorkommen";
   char* vowels = "aeiouAEIOU";
   char * pch;
   printf("strpbrk findet alle Umlaute im folgenden Satz\n'%s':\n", str);
   pch = strpbrk(str, vowels);
   while (pch != NULL)
   {
      printf("%c ", *pch);
      pch = strpbrk(pch + 1, vowels);
   }
   printf("\n");

   return EXIT_SUCCESS;
}

Es ergibt sich die folgende Ausgabe:

strpbrk
strpbrk findet alle Umlaute im folgenden Satz
'Ein Satz in dem alle Umlaute vorkommen':
E i a i e a e U a u e o o e

strtok

Mit der Funktion strtok kann man einen als ersten Parameter übergebenen String zerlegen. Trennzeichen sind die im zweiten Parameter übergebenen Zeichen. Das tückische an der Funktion ist, daß sie den übergebenen String manipuliert, was man nicht erwartet, wenn man die Funktion nicht kennt. Das folgende Programm zeigt die Funktionsweise von strtok absichtlich ohne Schleife.

void strokdemo1()
{
   puts("strtokdemo1");
   char source[] = "trennen von worten";
   char* token = NULL;
   printf("source = %s\n\n", source);
   // erster aufruf
   token = strtok(source, " ");
   printf("source = %s\n", source);
   printf("token = %s\n\n", token);
   // folgende aufrufe
   token = strtok(NULL, " ");
   printf("source = %s\n", source);
   printf("token = %s\n\n", token);
   token = strtok(NULL, " ");
   printf("source = %s\n", source);
   printf("token = %s\n\n", token);
   token = strtok(NULL, " ");
   printf("source = %s\n", source);
   printf("token = %s\n", token);
}

Die Ausgabe.

strtokdemo1
source = trennen von worten

source = trennen
token = trennen

source = trennen
token = von

source = trennen
token = worten

source = trennen
token = (null)















Valid XHTML 1.0 Strict top Back Next Up Home