文字列/指定した区切り文字で文字列を分割する・strtok
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* 指定した区切り文字で文字列を分割する・strtok [#ye7076bb]
カンマなどの区切り文字がある文字列を指定した区切り文字で...
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
* 関連記事 [#s3073949]
-[[文字列をコピーする・strcpy>文字列/文字列をコピーする・...
-[[文字列内の文字を1つずつ表示する>文字列/文字列内の文字...
-[[指定した区切り文字で文字列を分割する・strtok>文字列/指...
-[[文字列置換のCサンプルコード>文字列/文字列置換のCサンプ...
-[[小文字を大文字に変換する・toupper>文字列/小文字を大文...
-[[大文字を小文字に変換する・tolower>文字列/大文字を小文...
* strtok書式 [#d50cba75]
strtokの書式を以下に記します。
-必要なインクルードファイル
#include <string.h>
-strtokの書式
char *strtok(char *str, const char *delim);
-戻り値~
文字列のポインタ
-引数~
1つ目: 対象文字列。2回目以降はNULLを指定する。~
2つ目: 区切り文字を指定する
* strtokのCサンプルコード [#sa33fff9]
&ref(strtok.c); (改行コードLF)
#include <stdio.h>
#include <string.h>
int main(void) {
char s[] = "ubuntu,debian,fedora,redhat,suse,mint,vi...
char *p = NULL;
p = strtok(s, ",");
while (p != NULL) {
if (p != NULL) {
printf("%s\n", p);
}
p = strtok(NULL, ",");
}
return 0;
}
1回目のstrtok関数では、文字列のポインタを渡していますが2...
* strtokのCサンプルコードの実行結果 [#c9edbad7]
コンパイルし実行した結果を以下に記します。
$ gcc strtok.c -o strtok
$ ./strtok
ubuntu
debian
fedora
redhat
suse
mint
vine
* 注意事項 [#o10023d7]
上記サンプルコードの
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サンプルコードでした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
終了行:
#navi(../)
* 指定した区切り文字で文字列を分割する・strtok [#ye7076bb]
カンマなどの区切り文字がある文字列を指定した区切り文字で...
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
* 関連記事 [#s3073949]
-[[文字列をコピーする・strcpy>文字列/文字列をコピーする・...
-[[文字列内の文字を1つずつ表示する>文字列/文字列内の文字...
-[[指定した区切り文字で文字列を分割する・strtok>文字列/指...
-[[文字列置換のCサンプルコード>文字列/文字列置換のCサンプ...
-[[小文字を大文字に変換する・toupper>文字列/小文字を大文...
-[[大文字を小文字に変換する・tolower>文字列/大文字を小文...
* strtok書式 [#d50cba75]
strtokの書式を以下に記します。
-必要なインクルードファイル
#include <string.h>
-strtokの書式
char *strtok(char *str, const char *delim);
-戻り値~
文字列のポインタ
-引数~
1つ目: 対象文字列。2回目以降はNULLを指定する。~
2つ目: 区切り文字を指定する
* strtokのCサンプルコード [#sa33fff9]
&ref(strtok.c); (改行コードLF)
#include <stdio.h>
#include <string.h>
int main(void) {
char s[] = "ubuntu,debian,fedora,redhat,suse,mint,vi...
char *p = NULL;
p = strtok(s, ",");
while (p != NULL) {
if (p != NULL) {
printf("%s\n", p);
}
p = strtok(NULL, ",");
}
return 0;
}
1回目のstrtok関数では、文字列のポインタを渡していますが2...
* strtokのCサンプルコードの実行結果 [#c9edbad7]
コンパイルし実行した結果を以下に記します。
$ gcc strtok.c -o strtok
$ ./strtok
ubuntu
debian
fedora
redhat
suse
mint
vine
* 注意事項 [#o10023d7]
上記サンプルコードの
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サンプルコードでした。
#htmlinsertpcsp(c-btm.html,c-sp.html)
ページ名: