Cách làm nước sốt mì trộn đơn giản

現在のロケールまたは指定された 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 使用するロケール。

戻り値

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

解説

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

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

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

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

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 これを変更するには、「CRT でのグローバル状態」を参照してください。

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

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 %sn”, string ); printf_s( ” %sn %snn”, fmt1, fmt2 ); printf_s( “Search char: %cn”, ch ); // Search forward. pdest = strchr( string, ch ); result = (int)(pdest – string + 1); if ( pdest != NULL ) printf_s( “Result: first %c found at position %dn”, ch, result ); else printf_s( “Result: %c not foundn”, ch ); // Search backward. pdest = strrchr( string, ch ); result = (int)(pdest – string + 1); if ( pdest != NULL ) printf_s( “Result: last %c found at position %dn”, ch, result ); else printf_s( “Result:t%c not foundn”, 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

関連項目

文字列操作 ロケール マルチバイト文字のシーケンスの解釈 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

Related Posts

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *