用C语言写一个字符串提取子串的函数
时间: 2024-05-03 12:22:26 浏览: 158
以下是一个简单的用C语言写的字符串提取子串的函数:
```c
#include <stdio.h>
#include <string.h>
char *substr(char *s, int start, int end) {
int len = strlen(s);
char *sub;
if (start > len || end > len) { // 如果起始或结束位置超出字符串长度,返回空指针
return NULL;
}
if (start < 0 || end < 0 || start > end) { // 如果起始或结束位置不合法,返回空指针
return NULL;
}
sub = malloc(sizeof(char) * (end-start+2)); // 分配内存空间
if (sub == NULL) { // 如果分配失败,返回空指针
return NULL;
}
strncpy(sub, s+start, end-start+1); // 拷贝子串到新的字符数组中
sub[end-start+1] = '\0'; // 添加字符串结束符
return sub;
}
int main() {
char str[] = "hello, world!";
char *sub = substr(str, 0, 4);
printf("Original string: %s\n", str);
printf("Substring: %s\n", sub);
free(sub); // 释放内存空间
return 0;
}
```
在这个例子中,`substr`函数接受一个字符串的指针,以及起始和结束位置的索引。它检查这些索引是否超过了字符串的长度,并在需要时分配内存空间。然后它使用`strncpy`函数将子串拷贝到一个新的字符数组中,并在末尾添加字符串结束符。最后它返回这个新的字符串指针。在主函数中,我们使用这个函数从字符串中提取一个子串,并打印结果。最后,我们释放了分配的内存空间,以避免内存泄漏。
阅读全文