2. 使用指针和函数编写一程序,将字符串str2中从第m个字符开始的全部字符复制成另一个字符串str1。要求在主函数中输入字符串str2及m的值并输出复制结果,在被调用函数中完成复制过程,且被调用函数的格式必须为void copystr(char *p1,char *p2, int m),其中p1指向str1,p2指向str2。
时间: 2024-03-18 17:39:51 浏览: 55
下面是使用指针和函数编写的程序,实现将字符串 `str2` 中从第 `m` 个字符开始的全部字符复制成另一个字符串 `str1`:
```c
#include <stdio.h>
void copystr(char *p1, char *p2, int m);
int main() {
char str1[20];
char str2[20];
int m;
printf("Enter the string: ");
scanf("%s", str2);
printf("Enter the value of m: ");
scanf("%d", &m);
// 调用函数进行复制
copystr(str1, str2, m);
printf("Copied string: %s\n", str1);
return 0;
}
void copystr(char *p1, char *p2, int m) {
// 将指针 p2 指向第 m 个字符
p2 += m - 1;
// 复制字符串
while (*p2 != '\0') {
*p1 = *p2;
p1++;
p2++;
}
// 在字符串末尾加上结束符
*p1 = '\0';
}
```
该程序中,先定义了两个字符数组 `str1` 和 `str2`,以及一个整型变量 `m`。在主函数中,通过 `scanf` 函数分别输入字符串 `str2` 和 `m` 的值。然后调用 `copystr` 函数进行复制,并将结果保存在 `str1` 中。最后,输出复制后的字符串 `str1`。
在 `copystr` 函数中,首先将指针 `p2` 指向第 `m` 个字符(注意数组下标从0开始,所以要减1)。然后使用 `while` 循环来复制字符串,每次取出 `p2` 指向的字符,将其赋值给 `p1` 指向的字符,然后将两个指针都向后移动一位。最后,在字符串末尾加上结束符。
阅读全文