2006/12/27

[C言語]文字列の検索

■処理の流れ

string1からstring2[i]の文字列を探す。
それだけ。

■ソースファイル
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]){
//検索される文字列
char string1[] = "Hey mommy where is my shoes.";

//検索する文字列(する、されるじゃいまいちわかり難いね)
char *string2[] = {"Hey", "mommy", "where", "is", "my", "shoes", NULL};

//string2のインデックス用
int i = 0;

//string1の表示と先頭アドレスの表示
printf("string1 = ¥"%s¥"¥n", string1);
printf("string1はここから始まってますよ:%X¥n",&string1);

//string2の単語を先頭から検索、NULLになったらやめる
while(string2[i] != NULL){
printf("%sはメモリの%X番地から始まってますよ。¥n", string2[i], (int)strstr(string1, string2[i]));
i++;
}
}
■実行結果
$ ./SearchTest
string1 = "Hey mommy where is my shoes."
string1はここから始まってますよ:BFFFFC8F
HeyはメモリのBFFFFC8F番地から始まってますよ。
mommyはメモリのBFFFFC93番地から始まってますよ。
whereはメモリのBFFFFC99番地から始まってますよ。
isはメモリのBFFFFC9F番地から始まってますよ。
myはメモリのBFFFFC96番地から始まってますよ。
shoesはメモリのBFFFFCA5番地から始まってますよ。

1文字1バイト=一つの番地に収まる。
という訳でこういう場合わかりやすいね。
あとはstrlen()と組み合わせていろいろできそう。

0 件のコメント: