C言語で文字列内から部分文字列を見つける方法は?
C言語では、以下の方法で部分文字列を検索できます:
- 文字列ライブラリ関数を利用する: C言語の標準ライブラリに含まれる文字列関数(strchr(), strstr()など)を使って部分文字列を検索できます。その中のstrstr関数は文字列の中に別の文字列が含まれているかどうかを検索でき、含まれている場合は部分文字列が文字列内の位置を示すポインタを返し、含まれていない場合はNULLを返します。
ネイティブな日本語で文言を言い換えてください。1つのオプションのみ必要です。例:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world!";
char sub[] = "world";
char *ptr = strstr(str, sub);
if (ptr != NULL) {
printf("子串在字符串中的位置:%ld\n", ptr - str);
} else {
printf("未找到子串\n");
}
return 0;
}
- 文字の中で、文字ごとにループで繰り返し、その文字が部分文字列の最初の文字と一致するかをチェックし、一致する場合は、次の文字が一致するかを順番にチェックし、完全一致するまで、または一致しないまで繰り返します。
サンプルコード:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world!";
char sub[] = "world";
int len_str = strlen(str);
int len_sub = strlen(sub);
int i, j, k;
for (i = 0; i <= len_str - len_sub; i++) {
for (j = i, k = 0; k < len_sub && str[j] == sub[k]; j++, k++);
if (k == len_sub) {
printf("子串在字符串中的位置:%d\n", i);
break;
}
}
if (i > len_str - len_sub) {
printf("未找到子串\n");
}
return 0;
}
上記は2種類の一般的な部分文字列を検索する方法であり、状況に応じて適切な方法を選択して使用できます。