| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 512 人关注过本帖
标题:新人求助,大神来帮下.谢谢!!
只看楼主 加入收藏
Areshans
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-11-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
新人求助,大神来帮下.谢谢!!
将指定字符串复制到另一个空间中,返回这块空间的首地址    char*mystrcpy(char*dst,const char*src);

[此贴子已经被作者于2015-11-25 09:11编辑过]

2015-11-25 08:55
Areshans
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-11-25
收藏
得分:0 
自己顶一下  
2015-11-25 08:56
Areshans
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-11-25
收藏
得分:0 
大神快来帮忙啊
2015-11-25 09:00
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
程序代码:
#include<stdio.h>

char* mystrcpy(char* dst,const char* src)
{
    for(int i=0;*src!='\0';i++) *(dst+i)=*(src++);
    return dst;
}
int main()
{
    char a[100]={'\0'};
    char b[]="This is a test text.";
    char * p=mystrcpy(a,b);
    printf("%s\n",p);
    return 0;
}

DO IT YOURSELF !
2015-11-25 09:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
回复 4楼 wp231957
不好吧,难道a必须全部置'\0'才能有正确结果?

这是VC的一个示例代码
// char* strcpy( char* dst, const char* src )
// {
//    char* cp = dst;
//    while( *cp++ = *src++ );
//    return( dst );
// }

2015-11-25 10:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 5楼 rjsp
const char* src  难道它不是以'\0' 结束吗

DO IT YOURSELF !
2015-11-25 10:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 5楼 rjsp
类似这样的代码   while( *cp++ = *src++ );  我用不太好  有时会错 所以我尽量避免这样的简洁代码

DO IT YOURSELF !
2015-11-25 10:08
Areshans
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2015-11-25
收藏
得分:0 
回复 4楼 wp231957
for(int i=0;*src!='\0';i++) *(dst+i)=*(src++)
这句for函数后面的*(dst+i)=*(src++)什么意思啊   能不能用比较简单的方式写出来   新手不太明白啊  谢谢
2015-11-25 10:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用wp231957在2015-11-25 10:08:37的发言:

类似这样的代码   while( *cp++ = *src++ );  我用不太好  有时会错 所以我尽量避免这样的简洁代码
代码怎么写无所谓,我的意思是你的 mystrcpy 函数得给字符串加结尾的'\0'.
也就是
for(int i=0;*src!='\0';i++) *(dst+i)=*(src++);
改为
size_t i;
for(i=0; *src!='\0'; ++i) *(dst+i)=*(src++);
*(dst+i) = '\0';

然后,main函数中 char a[100]={'\0'}; 改为 char a[100];。
2015-11-25 10:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 8楼 Areshans
结合r版意见  又重新写了一次  再看不懂  我也没办法了

程序代码:
#include<stdio.h>

char* mystrcpy(char* dst,const char* src)
{
    char * p=dst;
    while(*src!='\0')
    {
        *p=*src;
        p++;
        src++;
    }
    *p='\0';
    return dst;
}
int main()
{
    char a[100];
    char b[]="This is a test text.";
    char * p=mystrcpy(a,b);
    printf("%s\n",p);
    return 0;
}

DO IT YOURSELF !
2015-11-25 10:22
快速回复:新人求助,大神来帮下.谢谢!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016803 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved