■処理の流れ
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++;
}
}
#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番地から始まってますよ。
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 件のコメント:
コメントを投稿