C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス strtok

🔧 文字列 ・ string.h ・ C89

strtok の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

char *strtok(char *s, const char *delim);

どんな関数か

文字列を区切り文字で分割する。内部に静的な状態を持ち、渡した文字列自体を書き換えながら破壊的にトークンを取り出すため、マルチスレッドや再入する用途では使えない。 複数の区切り文字を同時に指定でき、連続する区切り文字はまとめて1つの区切りとして扱われる。

使用例

#include <stdio.h>
#include <string.h>
int main(void) {
    char s[] = "a,b,c";
    char *tok = strtok(s, ",");
    while (tok) {
        puts(tok);
        tok = strtok(NULL, ",");
    }
    return 0;
}

つまずきやすい注意点

⚠️ 第1引数の文字列を直接書き換えるためリテラル文字列を渡すとクラッシュする。スレッドセーフ版が必要ならC11のstrtok_sを使う。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

strtok と一緒に使う関数

strchr文字列内で指定した文字が最初に現れる位置へのポインタを返す。見つからなければNULLを返す。終端の\0自体も検索対象とし… strncmp先頭から最大n文字だけを比較するstrcmpの派生版。プレフィックス一致の判定や、固定長フィールドの比較などによく使われ…

同じ分類(文字列)の関数

memcmp memcpy memmove memset memset_explicit strcat strchr strcmp strcoll strcpy strcspn strdup strerror strlen strncat strncmp

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る