C语言如何将一个字符串从第m个字符开始截取到末尾并形成新的字符串?
时间: 2025-01-20 17:12:58 浏览: 36
在C语言中,如果你想要从一个字符串中从第`m`个字符开始截取到末尾并形成一个新的字符串,可以使用指针和动态内存分配来实现。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 功能:从源字符串s中从位置m开始截取至结束生成新字符串
char* substring_from_m(char* s, int m) {
// 检查输入是否有效
if (m <= 0 || m > strlen(s)) {
return "Invalid input";
}
// 计算新字符串长度(包括起始索引但不包括结尾的'\0')
int len = strlen(s) - m + 1;
// 动态分配内存给新字符串
char* new_str = (char*)malloc(len * sizeof(char));
// 如果内存分配失败,返回NULL
if (!new_str) {
printf("Memory allocation failed.\n");
return NULL;
}
// 使用指针操作获取子串
strncpy(new_str, s + m - 1, len); // 注意:需要减去1是因为strncpy复制的是从目标地址开始的字节
new_str[len - 1] = '\0'; // 添加终止符
return new_str;
}
int main() {
char str[] = "Hello, World!";
int m = 7;
char* substr = substring_from_m(str, m);
if (substr != NULL) {
printf("Substring from position %d: %s\n", m, substr);
free(substr); // 别忘了释放动态分配的内存
}
return 0;
}
```
在这个例子中,函数`substring_from_m`会创建一个新的字符串,包含从第`m`个字符开始到字符串结束的所有内容。
阅读全文
相关推荐


















