输入一个字符串,输入两个整数,m,n输出从下标m开始的n个字符组成的新字符串(用指针方法实现)
时间: 2024-11-15 15:27:53 浏览: 10
将字符串中从第m个字符开始的全部字符复制成为另一个字符串并打印
在C语言中,如果你需要输入一个字符串以及两个整数m和n,然后生成一个新的子串,可以使用指针来完成这个任务。这里是一个简单的实现示例:
```c
#include <stdio.h>
#include <string.h> // 包含strlen和strcpy等字符串处理函数
// 函数声明,接收字符串指针和两个整数
char* sliceString(const char* str, int m, int n);
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin); // 注意去掉fgets的换行符
input[strcspn(input, "\n")] = '\0'; // 去除末尾的换行符
int m, n;
printf("Enter m and n: ");
scanf("%d%d", &m, &n);
char* sliced = sliceString(input, m, n);
if (sliced) {
printf("Sliced string from index %d to %d: %s\n", m, m+n-1, sliced);
free(sliced); // 释放内存
} else {
printf("Invalid slice.\n");
}
return 0;
}
// 实现sliceString函数
char* sliceString(const char* str, int m, int n) {
// 检查索引是否合法
if (m < 0 || n <= 0 || m + n > strlen(str)) {
return NULL; // 返回NULL表示无效的切片
}
char* result = (char*)malloc((n+1) * sizeof(char)); // 动态分配内存存储新字符串
strncpy(result, str+m, n); // 将指定长度的子串复制到result
result[n] = '\0'; // 结束字符串
return result;
}
```
这个程序首先读取用户输入的字符串、m和n,然后调用`sliceString`函数,返回从下标m开始的n个字符构成的新字符串。如果输入的索引不合法,函数将返回`NULL`。
阅读全文