void copy(char *x,int y,char* output)
将 anelwl 的代码再修改了下:
#include <stdio.h>
#include <stdlib.h>
char *copy(char *x,int y, int z) // z为原来字符串所使用的内存空间
{ char *s;
int i,j;
//分配内存应该是指针所指向内容在内存中所占的空间,所以前面先乘上(z-y+1)
s=(char*)malloc((z-y+1)*sizeof(char));
i=y-1; //从第y个字符开始复制,应该是 x+y-1
j=0;
while(*(x+i)!='\0')
{ *(s+j)=*(x+i);
i++;
j++;
}
*(s+j)='\0'; //字符串最后加上一个结束字符。
return(s);
}
int main()
{
char a[100],*p;
int m;
printf("the original string is:\n");
gets(a);
printf("m=");
scanf("%d",&m);
p=copy(a,m, 100);
printf("the copyed string is:\n");
printf("%s\n",p);
return 0;
}