====== strrchr() ====== strrchr ist definiert in der ''[[start|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 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 [[c:type:Integer]] übergeben, tatsächlich werden allerdings nur die unteren 8 Bit gesucht. Es sollte also ein [[type:char]] übergeben werden. \\ **Return value**: Zeiger auf das gefundene Element oder [[glossary: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 // definiert strrchr #include // definiert printf #include // 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 ===== [[c:lib:string:start|string]]: [[c:lib:string:memchr|memchr()]], [[c:lib:string:strchr|strchr()]], [[c:lib:string:strpbrk()]], [[c:lib:string:strcspn|strcspn()]]