C言語のstrcspn()関数とは?使い方とサンプルコードをわかりやすく解説
C言語のstrcspn()関数は、2つの文字列を比較し、第1引数の文字列(string1)の中に、第2引数の文字列(string2)に含まれる文字が最初に現れる位置までの文字数を数える関数です。この関数を使用するには、ヘッダーファイル「string.h」をインクルードする必要があります。
戻り値としては、string1 の先頭から、string2 のいずれかの文字が最初に一致する直前までの文字数が返されます。
strcspn()関数の構文
size_t strcspn(const char *string1, const char *string2);
パラメータ
- string1:走査(検索)対象となる第1の文字列へのポインタ。
- string2:string1 内で一致する文字を探すために使われる、検索対象文字の集合となる第2の文字列へのポインタ。
戻り値
string1 の先頭から、string2 に含まれる文字が最初に見つかるまでの文字数を size_t 型で返します。string2 のどの文字も string1 に含まれていない場合は、string1 全体の長さ(strlen(string1) と同じ値)が返されます。
strcspn()関数の使用例
#include<stdio.h>
#include<string.h>
int main(void) {
char str1[] = "Helloworld!";
char str2[] = "work";
int result = strcspn(str1, str2);
printf("一致する文字の前の文字数 : %d\n", (result + 1));
return 0;
}
実行結果
一致する文字の前の文字数 : 5
プログラムの解説
このプログラムでは、まずchar型の配列を2つ宣言し、それぞれに文字列を格納しています。その後、strcspn()関数に str1 と str2 を渡して呼び出しています。
strcspn()関数は、str1 を先頭から順に調べ、str2("work")に含まれる文字と最初に一致する位置を探します。この例では、str1 の5番目の文字 'o' が str2 に含まれているため、それより前にある4文字("Hell")が一致しない文字としてカウントされ、変数 result には 4 が代入されます。printf()では result + 1 を表示しているため、実行結果は「5」となります。
char str1[] = "Helloworld!"; char str2[] = "work"; int result = strcspn(str1, str2);
ポイント
strcspn()は、文字列の先頭から特定の文字集合を除外した部分の長さを求めたい場合や、トークン分割の前処理などに活用できる便利な関数です。また、類似の関数として、string2 に含まれる文字だけで構成された先頭部分の長さを返す strspn() があります。用途に応じて両者を使い分けるとよいでしょう。
-
JavaScript正規表現における\wと\Wの違いとは?
\w と \W の違い JavaScriptの正規表現において、\w と \W には重要な違いがあります。\w は「単語文字(ワードキャラクタ)」、つまり英数字やアンダースコアにマッチするのに対し、\W は「単語文字以外の文字(ノンワードキャラクタ)」、たとえば & や ^、% などの記号にマッチします。なお、\w は文字クラス [A-Za-z0-9_] と同等、\W はその否定である [^A-Za-z0-9_] と同等と考えると理解しやすいでしょう。以下で詳しく見ていきましょう。 構文1 new RegExp(\\w, g); 上記のコードは、JavaScriptで「単語文字」を検
-
JavaScriptのエスケープ文字とは?特殊文字のエスケープ方法と一覧を解説
エスケープ文字とは?エスケープ文字とは、プログラム上で本来意図した意味とは別の特別な意味に解釈されてしまう文字のことです。たとえば、ダブルクォートやシングルクォート、改行コードなどが該当します。こうした文字を「そのままの文字」として扱い、画面に出力したい場合には、直前にバックスラッシュ「\」を付けて記述します。この操作を「エスケープ処理」と呼びます。JavaScriptの主なエスケープ文字一覧コード意味・出力結果\bバックスペース\fフォームフィード\n改行(ニューライン)\rキャリッジリターン\t水平タブ\v垂直タブ\シングルクォート()\ダブルクォート()\\バックスラッシュ(\)バックス