判断字符串str2是否是str1的子串 ,写一段代码
时间: 2024-09-21 18:01:09 浏览: 38
当然可以,这里是一段简单的C语言代码,使用循环和逐字符比较的方式来检查字符串str2是否是str1的子串:
```c
#include <stdio.h>
#include <string.h>
int is_substring(char *str1, char *str2) {
if (!str1 || !str2) {
return -1; // 输入为空处理
}
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len2 > len1) { // 如果目标串比源串长,不可能是子串
return 0;
}
for (int i = 0; i <= len1 - len2; i++) {
int j;
for (j = 0; j < len2; j++) {
if (str1[i + j] != str2[j]) { // 每次比较两个对应位置的字符
break;
}
if (j == len2 - 1) { // 找到完全匹配,返回非零值表示是子串
return 1;
}
}
if (j == 0) { // 如果第一个字符就不匹配,跳过继续查找
continue;
}
}
return 0; // 没有找到子串,返回0
}
int main() {
char str1[] = "Hello, world!";
char str2[] = "world";
int result = is_substring(str1, str2);
if (result == 1) {
printf("%s is a substring of %s\n", str2, str1);
} else {
printf("%s is not a substring of %s\n", str2, str1);
}
return 0;
}
```
这个`is_substring()`函数会检查`str2`是否是`str1`的连续子串,不是的话返回0。注意,这种方法不考虑大小写,也不支持子串出现在中间或多次的情况,如果你需要更复杂的搜索,比如忽略大小写或允许子串出现多次,那么可以进一步修改代码。
阅读全文