Share via


strchr、wcschr、_mbschr、_mbschr_l

更新 : 2007 年 11 月

現在のロケールまたは指定された LC_CTYPE 変換状態カテゴリを使用し、文字列内の文字を探します。

char *strchr(
   const char *str,
   int c 
);  // C only
char *strchr(
   char * str,
   int c 
); // C++ only
const char *strchr(
   const char * str,
   int c 
); // C++ only
wchar_t *wcschr(
   const wchar_t *str,
   wchar_t c 
); // C only
wchar_t *wcschr(
   wchar_t *str,
   wchar_t c 
);  // C++ only
const wchar_t *wcschr(
   const wchar_t *str,
   wchar_t c 
);  // C++ only
unsigned char *_mbschr(
   const unsigned char *str,
   unsigned int c 
); // C only
unsigned char *_mbschr(
   unsigned char *str,
   unsigned int c 
); // C++ only
const unsigned char *_mbschr(
   const unsigned char *str,
   unsigned int c 
); // C++ only
unsigned char *_mbschr_l(
   const unsigned char *str,
   unsigned int c,
   _locale_t locale
); // C only 
unsigned char *_mbschr_l(
   unsigned char *str,
   unsigned int c,
   _locale_t locale
); // C++ only
const unsigned char *_mbschr_l(
   const unsigned char *str,
   unsigned int c,
   _locale_t locale
); // C++ only

パラメータ

  • str
    NULL で終わる元の文字列。

  • c
    検索する文字。

  • locale
    使用するロケール。

戻り値

これらの関数は、str 内で c が最初に出現する位置を指すポインタを返します。c が見つからない場合は、NULL を返します。

解説

strchr 関数は、str 内で c が最初に出現する位置を検索し、c が見つからない場合は NULL を返します。検索対象には終端の null 文字が含まれます。

wcschr 関数、_mbschr 関数、および _mbschr_l 関数は、strchr 関数のワイド文字バージョンとマルチバイト文字バージョンです。wcschr 関数の引数と戻り値はワイド文字列で、_mbschr 関数の引数と戻り値はマルチバイト文字列です。_mbschr はマルチバイト文字シーケンスを認識します。文字列が null ポインタの場合、_mbschr は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラを呼び出します。実行の継続が許可された場合、_mbschr 関数は NULL を返し、errno を EINVAL に設定します。strchr 関数と wcschr 関数はそれぞれのパラメータを検証しません。それ以外では、これらの関数の動作は同じです。

出力値は、ロケールの LC_CTYPE カテゴリの設定で決まります。詳細については、「setlocale」を参照してください。これらの関数のうち _l サフィックスが付いていないバージョンでは、現在のロケールを使用してロケール依存の動作を行います。_l サフィックスが付いているバージョンは、渡されたロケール パラメータを代わりに使用する点を除いて同じです。詳細については、「ロケール」を参照してください。

C では、これらの関数は、最初の引数に const ポインタを受け取ります。C++ では、2 つのオーバーロードを使用できます。const へのポインタを受け取るオーバーロードでは、const へのポインタが返されます。非 const へのポインタを受け取るバージョンでは、非 const へのポインタが返されます。この関数の const と非 const の両方のバージョンが使用できる場合、_CONST_CORRECT_OVERLOADS というマクロが定義されます。C++ のいずれのオーバーロードでも、非 const の動作が求められる場合は、シンボル _CONST_RETURN を定義してください。

汎用テキスト ルーチンのマップ

TCHAR.H のルーチン

_UNICODE および _MBCS が未定義の場合

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tcschr

strchr

_mbschr

wcschr

_n/a

適用なし

_mbschr_l

適用なし

必要条件

ルーチン

必須ヘッダー

strchr

<string.h>

wcschr

<string.h> または <wchar.h>

_mbschr, _mbschr_l

<mbstring.h>

互換性の詳細については、「互換性」を参照してください。

使用例

// crt_strchr.c
// 
// This program illustrates searching for a character
// with strchr (search forward) or strrchr (search backward).
//

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

int  ch = 'r';

char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] =   "         1         2         3         4         5";
char fmt2[] =   "12345678901234567890123456789012345678901234567890";

int main( void )
{
   char *pdest;
   int result;

   printf_s( "String to be searched:\n      %s\n", string );
   printf_s( "      %s\n      %s\n\n", fmt1, fmt2 );
   printf_s( "Search char:   %c\n", ch );

   // Search forward. 
   pdest = strchr( string, ch );
   result = (int)(pdest - string + 1);
   if ( pdest != NULL )
      printf_s( "Result:   first %c found at position %d\n", 
              ch, result );
   else
      printf_s( "Result:   %c not found\n" );

   // Search backward. 
   pdest = strrchr( string, ch );
   result = (int)(pdest - string + 1);
   if ( pdest != NULL )
      printf_s( "Result:   last %c found at position %d\n", ch, result );
   else
      printf_s( "Result:\t%c not found\n", ch );
}

String to be searched:
      The quick brown dog jumps over the lazy fox
               1         2         3         4         5
      12345678901234567890123456789012345678901234567890

Search char:   r
Result:   first r found at position 12
Result:   last r found at position 30

.NET Framework の相当するアイテム

System::String::IndexOf

参照

参照

文字列操作 (CRT)

ロケール

マルチバイト文字のシーケンスの解釈

strcspn、wcscspn、_mbscspn、_mbscspn_l

strncat、_strncat_l、wcsncat、wcsncat_l、_mbsncat、_mbsncat_l

strncmp、wcsncmp、_mbsncmp、_mbsncmp_l

strncpy、_strncpy_l、wcsncpy、_wcsncpy_l、_mbsncpy、_mbsncpy_l

_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l

strpbrk、wcspbrk、_mbspbrk、_mbspbrk_l

strrchr、wcsrchr、_mbsrchr、_mbsrchr_l

strstr、wcsstr、_mbsstr、_mbsstr_l