参数: des, 保存结果字符串 size, 用于保存结果字符串的缓冲区长度 src, 源字符串 first, 开始位置 count, 取得的字符数,为-1时表示直到最后 返回: 返回结果字符串指针
时间: 2024-06-08 21:09:37 浏览: 8
以下是一个C语言的实现,用于从源字符串中截取一部分字符,并将结果保存到目标字符串中:
```c
char* substring(char* des, int size, const char* src, int first, int count) {
int len = strlen(src);
if(first >= len || count == 0) {
// 如果开始位置超出了字符串长度,或者需要截取的字符数为0,直接返回空字符串
des[0] = '\0';
return des;
}
if(count < 0 || count > len - first) {
// 如果需要截取的字符数为负数或超出了字符串剩余长度,将count设置为剩余长度
count = len - first;
}
if(count >= size) {
// 如果需要截取的字符数超出了目标字符串的长度,将count设置为目标字符串的最大长度
count = size - 1;
}
strncpy(des, src + first, count);
des[count] = '\0';
return des;
}
```
调用方式如下:
```c
char buf[100];
const char* src = "Hello, world!";
char* result = substring(buf, sizeof(buf), src, 0, 5);
printf("%s\n", result); // 输出 "Hello"
result = substring(buf, sizeof(buf), src, 7, 6);
printf("%s\n", result); // 输出 "world!"
result = substring(buf, sizeof(buf), src, 0, 20);
printf("%s\n", result); // 输出 "Hello, world!"
```