用c语言写一代码,已知字符串str,从中截取一个子串,要求该子串是从str的第m个字符开始,由n个字符组成。
时间: 2024-09-17 08:06:22 浏览: 50
C语言求两个字符串的最长公共子串
5星 · 资源好评率100%
在C语言中,你可以使用`substr`函数来截取字符串,但是这个函数并不是标准库的一部分,所以在标准C库中并不直接提供。不过,我们可以手动实现一个简单的功能,通过数组和指针来达到目的。假设我们有一个函数`substring`来完成这个任务:
```c
#include <stdio.h>
#include <string.h>
char* substring(char* str, int m, int n) {
if (m >= strlen(str) || m + n > strlen(str)) {
printf("Invalid index or length.\n");
return NULL; // 或者返回空指针表示错误
}
char result[n]; // 新建一个足够大的结果数组
strncpy(result, str + m, n); // 使用 strncpy 防止内存溢出,并包括结束符'\0'
result[n] = '\0'; // 确保结果字符串有正确的结束
return result;
}
int main() {
char str[] = "Hello, World!";
int m = 7, n = 5;
char* sub_str = substring(str, m, n);
if (sub_str != NULL) {
printf("Substring from position %d to %d is: %s\n", m, m+n-1, sub_str);
}
free(sub_str); // 释放动态分配的空间
return 0;
}
```
在这个例子中,`substring`函数接收原始字符串、起始位置索引和长度作为参数,然后创建一个新的字符串,从给定的位置开始并包含指定数量的字符。
阅读全文