Namespaces
Variants

strcspn

From cppreference.net
< c ‎ | string ‎ | byte
ヘッダーで定義 <string.h>
size_t strcspn ( const char * dest, const char * src ) ;

dest が指すヌル終端バイト文字列の先頭部分で、 src が指すヌル終端バイト文字列に含まれない文字のみで構成される最大のセグメントの長さを返します。

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

目次

パラメータ

dest - 解析対象のヌル終端バイト文字列へのポインタ
src - 検索対象の文字を含むヌル終端バイト文字列へのポインタ

戻り値

null終端バイト文字列 src が指す文字列に含まれない文字のみで構成される最大の先頭セグメントの長さ

注記

この関数名は「補完スパン」を意味します。なぜなら、この関数は src に含まれない文字、つまり src の補集合を検索するためです。

#include <string.h>
#include <stdio.h>
int main(void)
{
    const char *string = "abcde312$#@";
    const char *invalid = "*$#";
    size_t valid_len = strcspn(string, invalid);
    if(valid_len != strlen(string))
       printf("'%s' contains invalid chars starting at position %zu\n",
               string, valid_len);
}

出力:

'abcde312$#@' contains invalid chars starting at position 8

参考文献

  • C11標準 (ISO/IEC 9899:2011):
  • 7.24.5.3 strcspn関数 (p: 368)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.21.5.3 strcspn関数 (p: 331)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.11.5.3 strcspn関数

関連項目

他のバイト文字列で見つかった文字のみで構成される
最大初期セグメントの長さを返す
(関数)
(C95)
他のワイド文字列で 見つからない ワイド文字のみで構成される
最大初期セグメントの長さを返す
(関数)
ある文字列中の任意の文字が別の文字列で最初に現れる位置を検索する
(関数)