#include<stdio.h> char *cpy(char *strDest, const char *strSrc) { char *p3; while((*strDest=*strSrc)!='\0') { strDest++; strSrc++; } p3=strDest; return p3; }
void main() { char *p1,*p2; char a[]={"china"}; p1=a; cpy(p2,p1); printf("%s",p2); } 运行有错误,程序的目的是字符串的复制,帮忙看下,哪里的问题,谢谢
----------------解决方案--------------------------------------------------------
p2只是个指针,程序没有分配要存放字符串的内存。
----------------解决方案--------------------------------------------------------
cpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?
----------------解决方案--------------------------------------------------------
晕,刚才一直打不开网页。
返回char*为了用strlen函数。数组是不能用这个函数的,但是string可以。
比如
char buffer[20];
int len = strlen(cpy(buffer, ****));
----------------解决方案--------------------------------------------------------
P2是实参,但你没 给他赋值!
----------------解决方案--------------------------------------------------------
#include<stdio.h> char *cpy( const char *strSrc) { char p3[10]; int i=0; while(*strSrc!='\0') { p3[i]=*strSrc; i+=1; strSrc++; }
return p3; }
void main() { char *p1,*p2; char a[]={"china"}; p1=a; p2= cpy(p1); printf("%s",p2); } 以上是我把你的代码作了一下修改,没问题了,可以运行了!
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
为什么要有返回值,指针直接作用于地址,要返回值有啥用
----------------解决方案--------------------------------------------------------
返回值还是没有理解,程序理解了,原来是没有分配内存的原因
----------------解决方案--------------------------------------------------------
#include<stdio.h> void cpy(char *strDest, char *strSrc) { int i=0; while(*strSrc!='\0') { *(strDest+i)=*strSrc; i+=1; strSrc++; } *(strDest+i)='\0';
}
void main() { char *p1; char *p2; char a[]={"china"}; p1=a; cpy(p2,p1); printf("%s",p2); }
----------------解决方案--------------------------------------------------------