用sub返回串s中第pop个字符起长度为len的子串完整c语言代码
时间: 2024-11-30 17:20:20 浏览: 18
在C语言中,你可以使用动态内存分配和字符串处理函数来实现这个功能。以下是一个简单的示例,其中`sub`函数从给定字符串`s`中提取指定索引`pop`开始,长度为`len`的子串:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* sub(char* s, int pop, int len) {
// 检查输入是否有效
if (pop + len > strlen(s) || s == NULL) {
printf("Invalid input: Pop and length exceed the string's size.\n");
return NULL;
}
// 创建一个新的动态字符串
char* result = (char*)malloc(len * sizeof(char) + 1); // 分配足够的空间并加1 for '\0'
strncpy(result, &s[pop], len); // 复制子串到新字符串
// 添加结束符
result[len] = '\0';
return result;
}
int main() {
char* str = "Hello, World!";
int pop = 7; // 第8个字符的位置
int len = 5; // 子串长度为5
char* substr = sub(str, pop, len);
if (substr != NULL) {
printf("Substring: %s\n", substr);
free(substr); // 释放动态内存
}
return 0;
}
```
在这个例子中,注意我们首先检查了索引和长度是否合理,然后创建了一个新的动态数组来存储子串,并确保添加了空字符`\0`作为结束标记。最后,在`main`函数中打印出子串并记得释放分配的内存。
阅读全文