请编写函数,删除子串。 函数原型 char* StrRemove(char *str, int idx, int len);
时间: 2024-10-18 10:21:30 浏览: 61
函数`StrRemove`是一个用于从输入字符串`str`中移除指定索引`idx`开始长度为`len`的子串的工具。它不会直接修改原字符串`str`,而是返回一个新的字符串,其中已删除了指定部分。
这是一个简单的实现示例,假设有足够的内存空间可以容纳结果:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* StrRemove(char* str, int idx, int len) {
if (str == NULL || idx < 0 || len <= 0) {
printf("Invalid input: null string or invalid index or length.\n");
return NULL;
}
// 计算新的字符串起始位置
size_t new_start = idx + len;
// 如果新起始位置超过字符串长度,则返回原始字符串
if (new_start >= strlen(str)) {
return strdup(str);
}
// 分配新的内存并复制剩余字符串
char* result = (char*)malloc(strlen(str) - len + 1); // +1 for the null terminator
strncpy(result, str + new_start, strlen(str) - new_start);
// 结束字符串
result[strlen(str) - new_start] = '\0';
return result;
}
int main() {
char* str = "Hello, World!";
char* removed_str = StrRemove(str, 7, 6); // 删除"World"
if (removed_str != NULL) {
printf("Modified string: %s\n", removed_str);
free(removed_str); // 释放分配的内存
}
return 0;
}
```
阅读全文