代码:
#include <stdio.h>
#include <string.h>
#define N 50
int main(){
void copy(char *p);
char str1[N],*p=str1;
printf("请输入一个字符串:\n");
scanf("%s",p);
copy(p);
return 0;
}
void copy(char *p){
char str2[N],*q=str2;
int m,i,j,len,flag=1;
len=strlen(p);
printf("您输入的字符串长度为%d\n",len);
printf("请输入要从第几个字符开始复制:\n");
do{
scanf("%d",&m);
if(m>len||m<=0){
printf("输入m值不合法,请输入1~%d以内的值:\n",len);
}
else flag=0;
}
while(flag);
// printf("m=%d\n",m);
//数组下标0开始,从第5个字符开始,即str1[4]
for(i=m-1,j=0;*(p+i)!='\0';i++,j++){
*(q+j)=*(p+i);
// printf("*q=%c\n",*(q+j));
}
*(q+j)='\0';
//注意下标问题,跳出循环后的str[j]无值,for循环中复制到str[j-1]结束的。不要写成*(q+j+1)='\0';
printf("\n--------------------------\n");
printf("复制结果为:\n");
printf("%s\n",q);
}
运行结果: