编写函数int findsub(char *str1,char *str2),功能是返回字符串str2在字符串str1中首先出现的字符位置。
时间: 2023-12-14 17:38:03 浏览: 172
下面是一个可能的实现:
```c
int findsub(char *str1, char *str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len2 > len1) {
return -1; // str2 比 str1 长,不可能找到
}
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) {
return i; // 匹配成功,返回位置
}
}
return -1; // 没有找到
}
```
该函数首先检查 `str2` 是否比 `str1` 长,如果是,则不可能找到,直接返回 -1。然后从 `str1` 的第一个字符开始遍历,每次检查 `str2` 是否与当前位置开始的一段子串匹配,如果匹配成功,返回当前位置,否则继续遍历。如果遍历完整个 `str1` 后都没有找到匹配的子串,就返回 -1 表示没找到。
相关问题
3、 编写函数int findsub(char *str1,char *str2),功能是返回字符串str2在字符串str1中首先出现的字符位置。
下面是实现该函数的代码:
```c
int findsub(char *str1, char *str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len2 > len1) {
return -1; // 如果要查找的字符串长度大于目标字符串长度,则不存在
}
for (int i = 0; i < len1 - len2 + 1; i++) {
bool found = true;
for (int j = 0; j < len2; j++) {
if (str1[i + j] != str2[j]) {
found = false;
break;
}
}
if (found) {
return i; // 如果找到了,则返回位置
}
}
return -1; // 找不到,返回-1
}
```
该函数的思路是:先判断要查找的字符串长度是否大于目标字符串长度,如果是,则不存在,直接返回-1。然后从目标字符串的第一个字符开始,逐个判断是否与要查找的字符串相同,如果全部相同,则说明找到了,返回其位置;如果一旦发现不同,则继续从下一个位置开始查找,直到查找完整个目标字符串为止。如果最终还是找不到,则返回-1。
int find_char(const char*str1,const char*str2)这个函数第二个是字符串时无法输出
这个函数的目的是查找字符串str2中第一个在字符串str1中出现的字符,并返回该字符在字符串str1中的下标。如果第二个参数传递的是一个字符串,则只会查找该字符串的第一个字符。如果该字符不存在于字符串str1中,则该函数会返回-1。
如果您无法输出结果,可能是因为您没有正确地调用该函数或者没有正确地处理函数返回的值。请注意,该函数返回的是一个int类型的值,您需要使用printf等函数将其输出到控制台或者其他地方。以下是一个使用该函数的示例代码:
```c
#include <stdio.h>
int find_char(const char* str1, const char* str2);
int main() {
const char* str1 = "hello world";
const char* str2 = "ow";
int index = find_char(str1, str2);
if (index != -1) {
printf("第一个匹配的字符在字符串str1中的下标是%d\n", index);
} else {
printf("字符串str2中的字符在字符串str1中不存在\n");
}
return 0;
}
int find_char(const char* str1, const char* str2) {
for (int i = 0; str2[i] != '\0'; i++) {
for (int j = 0; str1[j] != '\0'; j++) {
if (str1[j] == str2[i]) {
return j;
}
}
}
return -1;
}
```
在上面的代码中,我们首先定义了两个字符串str1和str2,然后调用了find_char函数来查找字符串str2中第一个出现在字符串str1中的字符。如果该字符存在,则输出其在字符串str1中的下标;如果不存在,则输出一个提示信息。请注意,我们在main函数中使用了printf函数来输出结果。
阅读全文