如何实现不用strcpy函数复制字符串呀

xyj200588 2007-01-11 07:41:55
不用strcpy函数如何实现字符串的复制,大家可以帮助我提供一些程序思想和技术指导。
谢谢
...全文
1535 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shencyx 2007-01-12
  • 打赏
  • 举报
回复
to steedhorse(晨星)
for(int i=0;str2[i]!='0';i++)??
写错了.应该改成
for(int i=0;str2[i]!=0;i++) 或for(int i=0;str2[i]!='\0';i++)??
这才对??
jefferycc 2007-01-12
  • 打赏
  • 举报
回复
cpystr(char *pss,char *pds){
while(*pds++=*pss++);
}
main(){
char *pa="CHINA",b[10],*pb;
pb=b;
cpystr(pa,pb);
printf("string a=%s\nstring b=%s\n",pa,pb);
}
pyrophile 2007-01-12
  • 打赏
  • 举报
回复
看到这个题目就立刻想到了while(*des ++ = *src ++)这个经典的式子,
Brian W.kernighan和Dennis M.Ritchie在C程序设计语言中提到过,
呵呵,简直是条件反射!
晨星 2007-01-12
  • 打赏
  • 举报
回复
在for里定义的i外面访问不了。除非你用VC6。- -b

int i;
for(i = 0; str1[i] != '\0'; ++i)
;//注意这个空语句。
这时,i就等于字符串的长度。

也可以用指针运算。
const char* p = str1;
while(*p++)
;
int len = p - str1 - 1;
晨星 2007-01-11
  • 打赏
  • 举报
回复
To:bargio_susie()
我那个s2是指前面定义的char s2[16],这里只是赋第一个字节。

To:shencyx(终有一天变成牛人..)
差不多,但int最好定义在for之外。
shencyx 2007-01-11
  • 打赏
  • 举报
回复
for(int i=0;i<length;i++)
str1[i] = str2[i];
不用strlen()怎样知道长度啊?是不是
for(int i=0;str2[i]!='0';i++)??
bargio_susie 2007-01-11
  • 打赏
  • 举报
回复
弱弱的问下:
(5)
s2[0] = '\0';
strcat(s2, s1);

这个也行么??s2[0]空间是不是不够???
lockhall 2007-01-11
  • 打赏
  • 举报
回复
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ )
NULL ;
return address ;
}
晨星 2007-01-11
  • 打赏
  • 举报
回复
还没听明白啊,楼主是不是还没搞清楚C语言中的字符串是啥啊。:)
方法有很多,比如,对于:
char* s1 = "Hello World";
char* s2[16];

不用strcpy,也有另外好多方法可以实现把s1的内容拷贝到s2中,比如:
(1)
int len = strlen(s1);
for(int i = 0; i < len; ++i) {
s2[i] = s1[i];
}

(2)
int len = strlen(s1);
memcpy(s1, s2, len + 1);

(3)
sprintf(s2, "%s", s1);

(4)
char* p = s2;
char* q = s1;
while(*p++ = *q++)
;

(5)
s2[0] = '\0';
strcat(s2, s1);
blackmurder 2007-01-11
  • 打赏
  • 举报
回复
for(int i=0;i<length;i++)
str1[i] = str2[i];
xyj200588 2007-01-11
  • 打赏
  • 举报
回复
明白大家的指点,但是具体应该怎么样来写,还是有些不明白
kouzhongling 2007-01-11
  • 打赏
  • 举报
回复
memcpy
DonaldKnuth 2007-01-11
  • 打赏
  • 举报
回复
sprintf 或 memcpy ,呵呵
晨星 2007-01-11
  • 打赏
  • 举报
回复
while(*dest++ = *src++);
晨星 2007-01-11
  • 打赏
  • 举报
回复
自已手工拷贝呗,相当于自己实现了strcpy。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧