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進数
0 件のコメント:
コメントを投稿