当前位置: 代码迷 >> C语言 >> 字符串复制问题,帮看下
  详细解决方案

字符串复制问题,帮看下

热度:85   发布时间:2005-09-23 16:59:00.0
字符串复制问题,帮看下

#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); } 运行有错误,程序的目的是字符串的复制,帮忙看下,哪里的问题,谢谢

搜索更多相关的解决方案: char  字符  strDest  strSrc  cpy  

----------------解决方案--------------------------------------------------------
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); }


----------------解决方案--------------------------------------------------------
  相关解决方案