如何用C语言实现删除字符串s中的从位置i开始长度为k的子串?
时间: 2024-10-21 11:08:44 浏览: 46
使用C语言提取子字符串及判断对称子字符串最大长度
5星 · 资源好评率100%
在C语言中,你可以通过动态内存管理和字符数组操作来删除字符串`s`中从位置`i`开始长度为`k`的子串。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void delete_substring(char* s, int i, int k) {
if (s == NULL || i < 0 || i + k > strlen(s)) { // 检查输入的有效性
printf("Invalid input.\n");
return;
}
// 计算实际需要移动的新字符串长度
int new_length = strlen(s) - k;
// 如果新长度为0,直接设置为'\0'
if (new_length == 0) {
s[0] = '\0';
} else { // 否则,从新的起始位置开始复制剩余字符
memmove(s + i, s + i + k, new_length); // 使用memmove防止覆盖已修改的部分
s[strlen(s)] = '\0'; // 更新字符串结束符
}
}
int main() {
char str[] = "Hello, World!";
int i = 7, k = 5; // 要删除的子串从位置7开始,长度为5
delete_substring(str, i, k);
printf("Modified string: %s\n", str);
阅读全文