建议你多看些书,把程序写的规范点,这样别人和自己修正程序的时候看起来都会比较舒服,变量能不必定义的就不去定义
还是用strncpy函数吧!!
其实我就是没给*s分配内存空间嘛,分配一个应该就对了嘛
下面是按着你的思路帮你修正过的程序:(已经编译通过)
#include <stdio.h>
#include <stdlib.h>
char *copy(char *x,int y)
{ char *s;
int i,j;
s=(char*)malloc(sizeof(char)); //为定义的指针分配内存地址,这是必须的
i=y;
j=0;
while(*(x+i)!='\0')
{ *(s+j)=*(x+i);
i++;
j++;
}
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);
printf("the copyed string is:\n");
printf("%s\n",p);
return 0;
}
main函数里的return 0;只是规范标准,int main(){ return 0}你也可以不写,但是程序运行会出现warning 一个好的程序员应该尽量做到最后调试出的程序不会出现warnings!
还是不对啊,我用你这个编译,是没错误和warning,但是不能得出正确答案