用C语言,采用顺序存储方式存储串,编写函数,在串str1中的指定下标i处截取指定长度len,赋给串str2,同时也输出截断后的串str1。
时间: 2024-10-16 16:04:01 浏览: 15
在C语言中,如果我们采用顺序存储方式(数组或字符指针)来存储字符串,可以编写如下的函数来实现这个功能:
```c
#include <stdio.h>
#include <string.h>
void substring(char str1[], char str2[], int i, int len) {
// 检查输入的有效性
if (i < 0 || i + len > strlen(str1) || len <= 0) {
printf("Invalid input! Index and length should be valid.\n");
return;
}
// 截取并复制子串到目标字符串
strncpy(str2, str1 + i, len); // strncpy防止溢出
str2[len] = '\0'; // 结束字符串
// 输出截断后的原字符串
printf("After cutting at index %d with length %d, the string is: \"%s\"\n", i, len, str1);
// 如果需要,也可以直接输出str2
printf("Substring assigned to str2: \"%s\"\n", str2);
}
int main() {
char str1[] = "Hello, World!";
char str2[50];
int i = 7, len = 5; // 示例:从位置7开始截取5个字符
substring(str1, str2, i, len);
return 0;
}
```
在这个例子中,`substring` 函数接收两个字符串以及起始索引 `i` 和长度 `len`。它首先检查输入是否合法,然后使用 `strncpy` 函数安全地从原字符串 `str1` 中复制指定长度的子串到 `str2`。最后,函数会打印出原始字符串 `str1` 的截断部分以及 `str2` 的结果。
阅读全文