试编写一个函数 delsubStr(s, t), s 和t为字符指针, 该函数删除在字符串 s 中发现的所有字 符串 t。(要求不能使用任何字符串操作相关的标准库函数)
时间: 2024-11-13 08:22:30 浏览: 20
在不使用任何字符串操作标准库函数的情况下,你可以通过遍历s和t,并维护两个指针i和j来实现这个功能。以下是使用C语言的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
void delete_substring(char* s, char* t) {
int si = 0; // s的指针
int ti = 0; // t的指针
while (s[si] != '\0') { // 遍历s直到结束
if (ti == strlen(t)) { // 如果t已处理完,移动s指针
s[si++] = '\0'; // 将当前字符赋值给s并移动指针
} else if (strcmp(&s[si], t + ti) == 0) { // 比较当前字符是否匹配
ti++; // 如果匹配,继续处理t
} else { // 不匹配,移动s指针
s[si++] = s[si]; // 移动s到下一个字符
}
}
}
// 示例
int main() {
char s[] = "Hello, World!";
char t[] = "llo";
delete_substring(s, t);
printf("Modified string: %s\n", s); // 输出结果:He, World!
return 0;
}
```
这个函数会遍历`s`中的每个字符,如果遇到`t`中的字符序列,则跳过这部分;如果遇到其他字符,则将其移到新位置。注意,在这里我们手动检查字符而不是依赖于字符串函数,因为题目限制了使用范围。
阅读全文