c语言题目描述 用指针实现:有一字符串,包含n(n≥0)个字符。写一函数,将此字符串中从第m(1≤m≤n)个字符开始的全部字符复制成为另一个字符串。 输入 先输入1个字符串(长度不超过80),假设其长度为n。 再输入要截取的起点m(1≤m≤n)。 输出 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串,并输出。 样例输入 C programming. 3 样例输出 programming.
时间: 2024-02-26 13:57:29 浏览: 57
好的,这是一道比较基础的 C 语言指针题目。下面是解题思路和代码实现:
1. 首先读入字符串和要截取的起点 m。
2. 判断输入的 m 是否在字符串范围内,如果不在则输出错误信息并退出程序。
3. 动态分配内存申请一个新的字符串,长度为原字符串长度减去 m 加上 1,即为要复制的字符数加上一个字符串结束符 '\0' 的长度。
4. 用指针 p1 指向原字符串的第 m 个字符,用指针 p2 指向新字符串的第一个字符。
5. 用循环将 p1 指针指向的字符依次复制到 p2 指针指向的位置,直到字符串结束符 '\0'。
6. 输出新字符串,最后释放内存。
下面是 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[81], *new_str;
int n, m, i;
char *p1, *p2;
// 读入字符串和要截取的起点 m
scanf("%s %d", str, &m);
// 计算字符串长度
n = strlen(str);
// 判断输入的 m 是否在字符串范围内
if (m < 1 || m > n) {
printf("Error: m is out of range!\n");
return 0;
}
// 动态分配内存申请一个新的字符串
new_str = (char*)malloc((n - m + 2) * sizeof(char));
// 用指针 p1 指向原字符串的第 m 个字符
p1 = &str[m - 1];
// 用指针 p2 指向新字符串的第一个字符
p2 = new_str;
// 用循环将 p1 指针指向的字符依次复制到 p2 指针指向的位置
while (*p1 != '\0') {
*p2++ = *p1++;
}
// 在新字符串结尾添加字符串结束符 '\0'
*p2 = '\0';
// 输出新字符串
printf("%s\n", new_str);
// 释放内存
free(new_str);
return 0;
}
```
输入样例:
```
C programming.
3
```
输出样例:
```
programming.
```
阅读全文