用C语言设计一个函数,如果T不包含在S中,则返回字符串T在字符串S或-1中最后一次出现的位置。使用指针指向字符串的每个字符。
时间: 2024-12-14 10:20:48 浏览: 14
在C语言中,你可以设计一个名为`last_occurrence`的函数,它接受两个指向字符数组的指针作为参数,代表待查找的字符串T和包含它的字符串S。以下是函数的一个简单实现:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,返回值类型为int
int last_occurrence(char* str, char* substr) {
int index = -1; // 初始化查找结果为-1,表示未找到
int i = 0, j = 0;
// 遍历主串str
while (str[i]) {
// 如果找到子串substr的起始位置
if (str[i] == substr[j]) {
i++; // 移动到下一个字符
j++; // 移动到子串中的下一个字符
// 当子串结束或者找到了子串,更新最后一次出现的位置
if (j == strlen(substr)) {
index = i - 1;
break; // 已经找到了整个子串,退出循环
}
} else {
// 子串不在当前位置,回溯并检查下一个子串的可能性
i = i - j + 1;
j = 0; // 从头开始再次匹配
}
}
return index;
}
int main() {
char str[] = "Hello, world!";
char substr[] = "world";
printf("Last occurrence of '%s' in '%s': %d\n", substr, str, last_occurrence(str, substr));
return 0;
}
```
阅读全文