[C言語] 文字列操作

2016年3月24日

C言語 テクノロジー プログラミング

WEB言語に慣れているエンジニアにとって、C言語の文字列操作は非常に癖があるように感じます。 型宣言はもちろんの事、連結、分割、切り出し、判定など、どれも少し面倒くさい作業が必要です。 とりあえず、サンプルコードを見れば分かりやすいので、メモしておきます。

宣言

# strを文字列型としてセット(その後"ABC"という文字列を代入) char *str; str = "ABC"; # strに"ABC"という文字列を宣言と同時にセット char *str = "ABC";

連結

# str1とstr2をstr0に代入 #include <stdio.h> #include <stdlib.h> int main(void){ char str0[] = {"\0"}; char *str1 = "AAA"; char *str2 = "BBB"; sprintf(str0, "%s%s", str1, str2); printf("%s\n",str0); return EXIT_SUCCESS; } 実行すると AAABBB と表示

置換

文字列の"A"を"-"に置換する ※1文字のみの変換パターンです。 #include <stdio .h> #include <string .h> int main (void){ char *p; char str[] = {"ABCDEFGAabcdefgaAdDAW"}; char ptn = 'A'; char rep = '-'; printf("%s\n", str); while ((p = strchr(str, ptn))!=NULL){ *p = rep; } printf("%s\n", str); return 0; } コンパイルして実行すると $ ./replace.app ABCDEFGAabcdefgaAdDAW -BCDEFG-abcdefga-dD-W

分割

"Hello-world"という文字列を"-"で分割します。 #include <stdio.h> #include <string.h> int main(void) { char s1[] = "Hello-world"; char s2[] = " -."; char *tok; tok = strtok( s1, s2 ); while( tok != NULL ){ printf( "%s\n", tok ); tok = strtok( NULL, s2 ); } return 0; } $ ./split.app Hello world

書式サンプル

%s : 文字列 %c : 文字 %d : 整数(10進数) %f : 浮動小数点(小数点) %x : 16進数 %o : 8進数

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。