Namespaces
Variants

strrchr

From cppreference.net
< c ‎ | string ‎ | byte
ヘッダーで定義 <string.h>
char * strrchr ( const char * str, int ch ) ;
(1)
/*QChar*/ * strrchr ( /*QChar*/ * str, int ch ) ;
(2) (C23以降)
1) ヌル終端バイト文字列 str が指す文字列内で( char への変換を経た) ch の最後の出現を検索します(各文字は unsigned char として解釈されます)。終端のヌル文字は文字列の一部と見なされ、 ' \0 ' を検索する場合に見つけることができます。
2) 型ジェネリック関数で、 (1) と同等の機能を持つ。 T を修飾なしの文字オブジェクト型とする。
  • str が型 const T * の場合、戻り値の型は const char * となる。
  • それ以外の場合、 str が型 T * の場合、戻り値の型は char * となる。
  • それ以外の場合、動作は未定義となる。
これらのジェネリック関数のマクロ定義が抑制され、実際の関数にアクセスする場合(例えば、 ( strrchr ) が使用される場合や関数ポインタが使用される場合)、実際の関数宣言 (1) が可視となる。

str がヌル終端バイト文字列へのポインタでない場合、動作は未定義です。

目次

パラメータ

str - 解析対象のヌル終端バイト文字列へのポインタ
ch - 検索対象の文字

戻り値

見つかった文字へのポインタを str 内で返します。該当する文字が見つからない場合はヌルポインタを返します。

#include <stdio.h>
#include <string.h>
int main(void)
{
    char szSomeFileName[] = "foo/bar/foobar.txt";
    char* pLastSlash = strrchr(szSomeFileName, '/');
    char* pszBaseName = pLastSlash ? pLastSlash + 1 : szSomeFileName;
    printf("Base Name: %s", pszBaseName);
}

出力:

Base Name: foobar.txt

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.24.5.5 strrchr関数 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.24.5.5 strrchr関数 (p: TBD)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.24.5.5 strrchr関数 (p: 368-369)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.21.5.5 strrchr関数 (p: 331)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.11.5.5 strrchr関数

関連項目

文字の最初の出現位置を検索
(関数)
ある文字列中の任意の文字が別の文字列で最初に現れる位置を検索
(関数)