指定した区切り文字で文字列を分割する・strtok †カンマなどの区切り文字がある文字列を指定した区切り文字で分割するstrtokについてのCサンプルコードと実行例を以下に記します。 スポンサーリンク 関連記事 †
strtok書式 †strtokの書式を以下に記します。
strtokのCサンプルコード †strtok.c (改行コードLF) #include <stdio.h> #include <string.h> int main(void) { char s[] = "ubuntu,debian,fedora,redhat,suse,mint,vine"; char *p = NULL; p = strtok(s, ","); while (p != NULL) { if (p != NULL) { printf("%s\n", p); } p = strtok(NULL, ","); } return 0; } 1回目のstrtok関数では、文字列のポインタを渡していますが2回目以降はNULLになっているのがCサンプルコードから読むことができます。 strtokのCサンプルコードの実行結果 †コンパイルし実行した結果を以下に記します。 $ gcc strtok.c -o strtok $ ./strtok ubuntu debian fedora redhat suse mint vine 注意事項 †上記サンプルコードの char s[] = "ubuntu,debian,fedora,redhat,suse,mint,vine"; を char *s = "ubuntu,debian,fedora,redhat,suse,mint,vine"; にするとSegmentation faultになります。 その理由は、char[]とchar*には違いがあります。 簡単に説明するとchar*で渡される文字列は変更禁止となります。 以上、strtokのCサンプルコードでした。 スポンサーリンク |