C语言:删除S中第i个字符开始的长度为len的字串,
时间: 2024-11-15 10:31:29 浏览: 0
C语言求两个字符串的最长公共子串
在C语言中,如果想要删除字符串S中从第i个字符开始长度为len的子串,可以使用动态内存管理和字符串操作。这里我们假设原始字符串S是以'\0'结束的null终止符字符串。
以下是一个简单的示例,使用了`strcpy()`函数复制原字符串到新位置,并保留剩余部分:
```c
#include <stdio.h>
#include <string.h>
void deleteSubstring(char* S, int i, int len) {
if (i + len <= strlen(S)) { // 检查索引是否合法
char temp[strlen(S) - len]; // 定义新的临时字符串
strncpy(temp, S + i, strlen(S) - i); // 跳过已删除部分,复制剩余部分到temp
temp[strcspn(temp, "\0")] = '\0'; // 将temp截断于下一个'\0'
// 将修改后的字符串替换原来的字符串
strcpy(S, temp);
} else {
printf("Invalid index or length!\n");
}
}
int main() {
char S[] = "Hello, World!";
int i = 7; // 要删除的位置
int len = 6; // 删除的子串长度
deleteSubstring(S, i, len);
printf("Modified string: %s\n", S);
return 0;
}
```
在这个例子中,如果你调用`deleteSubstring(S, 7, 6)`,会删除"World!"这个子串,输出结果将是"Hello!"。
阅读全文