文字や文字列の探索方法の比較
#include <stdio.h>
#include <string.h>
int main()
{
long k;
int i;
char *pos;
char *str = "xybaccakmccazabc";
printf("対象とする文字列 %s\n", str);
/*
文字の探索
*/
pos = strchr(str, 'a');
k = (long)pos - (long)str + 1;
printf(" 文字の探索\n");
printf(" 文字 a は最初から %ld 文字目にあります\n", k);
/*
文字の後方からの探索
*/
pos = strrchr(str, 'a');
k = (long)pos - (long)str + 1;
printf(" 文字の後方からの探索\n");
printf(" 文字 a は最初から %ld 文字目にあります\n", k);
/*
文字群の中のどれかの文字の探索
*/
pos = strpbrk(str, "uvwk");
k = (long)pos - (long)str + 1;
printf(" 文字群「uvwk」に含まれる文字の探索\n");
printf(" 文字 %c が最初から %ld 文字目にあります\n", *pos, k);
/*
文字列の探索
*/
pos = strstr(str, "cc");
k = (long)pos - (long)str + 1;
printf(" 文字列の探索\n");
printf(" 文字列 cc は最初から %ld 文字目にあります\n", k);
/*
指定された文字群以外からなる文字列の長さ
*/
i = strcspn(str, "abc");
printf(" 文字群「abc」以外からなる文字列の長さ\n");
printf(" 最初から %d 文字目までに a,b,c の文字は含まれません\n", i);
/*
指定された文字群からなる文字列の長さ
*/
i = strspn(str, "abcxy");
printf(" 文字群「abcxy」からなる文字列の長さ\n");
printf(" 最初から %d 文字目までが a,b,c,x,y でなっています\n", i);
return 0;
}
(出力)
対象とする文字列 xybaccakmccazabc
文字の探索
文字 a は最初から 4 文字目にあります
文字の後方からの探索
文字 a は最初から 14 文字目にあります
文字群「uvwk」に含まれる文字の探索
文字 k が最初から 8 文字目にあります
文字列の探索
文字列 cc は最初から 5 文字目にあります
文字群「abc」以外からなる文字列の長さ
最初から 2 文字目までに a,b,c の文字は含まれません
文字群「abcxy」からなる文字列の長さ
最初から 7 文字目までが a,b,c,x,y でなっています