strrchr()

strrchr ist definiert in der string, die in C über string.h, bzw. in C++ über cstring eingebunden wird.

Funktion

strrchr() sucht das letzte Auftreten eines Zeichens (char) in einem Speicherbereich.

Signatur

#include <string.h>
char const * strrchr( char const * string, int value );
char       * strrchr( char       * string, int value );

string : Zeiger auf den Speicherblock, der durchsucht werden soll
value: Zeichen, dass gesucht werden soll. Das Zeichen wird als Integer übergeben, tatsächlich werden allerdings nur die unteren 8 Bit gesucht. Es sollte also ein char übergeben werden.

Return value: Zeiger auf das gefundene Element oder NULL.

Fehlerquellen

Wird das Nullbyte am Ende des Strings vergessen, so endet die Suche nicht am Ende des Strings und es findet ein lesender Zugriff auf Speicherbereiche statt, die nicht dem Programm zugeordnet sind. Dies endet daher häufig in einem Programmabsturz.

Beispiel

#include <string.h>      // definiert strrchr
 
#include <stdio.h>       // definiert printf
#include <stdlib.h>      // definiert EXIT_SUCCESS
 
char const * string = "Hello proggen.org";
 
int main( void )
{
  char const * pos = strchr( string, 'o' );               // Vorwärtssuche
 
  if( pos ) printf( "%s: -> 'o' gefunden an Position: %d\n", string, pos - string );
  else      printf( "%s: -> kein 'o' gefunden\n", string );
 
  pos = strrchr( string, 'o' );                           // Rückwärtssuche
 
  if( pos ) printf( "%s: <- 'o' gefunden an Position: %d\n", string, pos - string );
  else      printf( "%s: <- kein 'o' gefunden\n", string );
 
  pos = strrchr( string, 'x' );                           // Rückwärtssuche
 
  if( pos ) printf( "%s: <- 'x' gefunden an Position: %d\n", string, pos - string );
  else      printf( "%s: <- kein 'x' gefunden\n", string );
 
  return EXIT_SUCCESS;
}

Ausgabe:

Hello proggen.org: -> 'o' gefunden an Position: 4
Hello proggen.org: <- 'o' gefunden an Position: 14
Hello proggen.org: <- kein 'x' gefunden

siehe auch