使用指针和函数编写一程序,将字符串str2中从第m个字符开始的全部字符复制成另一个字符串str1。要求在主函数中输入字符串str2及m的值并输出复制结果,在被调用函数中完成复制过程,且被调用函数的格式必须为void copystr(char *p1,char *p2, int m),其中p1指向str1,p2指向str2。
时间: 2024-02-27 14:58:52 浏览: 57
好的,下面是代码:
```c
#include <stdio.h>
#include <string.h>
void copystr(char *p1, char *p2, int m);
int main() {
char str2[100], str1[100];
int m;
printf("请输入字符串str2:");
gets(str2);
printf("请输入从第几个字符开始复制:");
scanf("%d", &m);
copystr(str1, str2, m);
printf("复制结果为:%s\n", str1);
return 0;
}
void copystr(char *p1, char *p2, int m) {
int len = strlen(p2);
if (m > len) {
printf("从第%d个字符开始超出字符串长度,无法复制!\n", m);
return;
}
int i;
for (i = 0; i < len - m + 1; i++) {
*(p1 + i) = *(p2 + m - 1 + i);
}
*(p1 + i) = '\0';
}
```
在这个程序中,我们通过 `gets()` 和 `scanf()` 分别获取用户输入的字符串 `str2` 和从第几个字符开始复制的位置 `m` 。然后我们调用 `copystr()` 函数将从第 `m` 个字符开始的所有字符复制到字符串 `str1` 中,并在主函数中输出复制结果。
在 `copystr()` 函数中,我们首先获取字符串 `str2` 的长度,并判断从第 `m` 个字符开始是否超出了字符串长度。如果超出了,我们就输出错误信息并返回。否则,我们使用指针遍历从第 `m` 个字符开始的所有字符,并将它们复制到字符串 `str1` 中。最后,我们在字符串 `str1` 的末尾添加一个空字符 `\0` 来表示字符串的结束。
阅读全文