写一个函数,参数1是截取字符串的起始位置, 参数2是截取字符串的结束位置,要截取的字符串,最后根据函数参数返回对应截取的字符串 模拟slice(), substr(),substring().
时间: 2023-04-05 07:03:17 浏览: 146
好的,我可以回答这个问题。以下是一个示例函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* substring(char* str, int start, int end) {
int len = strlen(str);
if (start < 0 || end > len || start > end) {
return NULL;
}
char* result = (char*)malloc(sizeof(char) * (end - start + 1));
strncpy(result, str + start, end - start);
result[end - start] = '\0';
return result;
}
int main() {
char* str = "Hello, world!";
char* s1 = substring(str, 0, 5); // "Hello"
char* s2 = substring(str, 7, 11); // "world"
char* s3 = substring(str, 0, 13); // "Hello, world!"
printf("%s\n%s\n%s\n", s1, s2, s3);
free(s1);
free(s2);
free(s3);
return 0;
}
```
这个函数接受三个参数:要截取的字符串、起始位置和结束位置。如果起始位置小于0、结束位置大于字符串长度或起始位置大于结束位置,函数将返回 NULL。否则,函数将返回一个新的字符串,其中包含从起始位置到结束位置的子字符串。在返回结果之前,我们需要使用 malloc() 函数为新字符串分配内存,并使用 strncpy() 函数将子字符串复制到新字符串中。最后,我们需要在新字符串的结尾添加一个空字符,以确保它是一个有效的 C 字符串。
阅读全文