| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 668 人关注过本帖
标题:我自己写的strcpy为什么出错?
只看楼主 加入收藏
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
结帖率:92.45%
收藏
已结贴  问题点数:20 回复次数:7 
我自己写的strcpy为什么出错?
#include <stdio.h>
#include<assert.h>

char *mystrcpy(char *strDest,const char *strSrc)
{
    char *address= strDest;
    ASSERT ((strDest!=NULL) && (strSrc !=NULL));  
  
                  
    while(*strSrc != '\0' )
    {
        *strDest = *strSrc;
        *strSrc++;
        *strDest++;
    }
    *strDest = '\0';
    return address ;
        
}


int main(void)
{
    char a[10];
    mystrcpy(a,"123");
    printf("%s",a);
    return 0;
}
搜索更多相关主题的帖子: address include return 
2011-03-30 09:51
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:0 
截图
图片附件: 游客没有浏览图片的权限,请 登录注册

我是初学者
2011-03-30 09:55
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:5 
你的函数不需要返回类型,因为当把整个数组作为形参传给函数的时候,操作完成后strDest已经是你需要的了。
PS:正在学指针,对指针还不熟悉,我的例子你参考:

程序代码:
void strcp (char a[],char b[]) { //源字串b,目的字串a
        int i=0;
        while(b[i]!='\0') {
                a[i]=b[i];
                i++;
        }
        a[i]='\0';
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-30 10:01
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:15 
ASSERT改成assert

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2011-03-30 10:04
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1692
专家分:4282
注 册:2007-12-27
收藏
得分:0 
那两句带++的前面不要带*就勉强可以了。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2011-03-30 14:46
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:0 
改过的程序:
void mystrcpy(char *strDest,const char *strSrc)
{
    char *address;
    address=strDest;
    assert((strDest!=NULL)&&(strSrc!=NULL));               
    while(*strSrc != '\0' )
    {
        *strDest = *strSrc;
        strSrc++;
        strDest++;
    }
    *strDest = '\0';         
}

我的地盘
2011-03-30 17:16
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
以下是引用xzy199999在2011-3-30 09:51:03的发言:

#include
#include

char *mystrcpy(char *strDest,const char *strSrc)
{
    char *address= strDest;
    ASSERT ((strDest!=NULL) && (strSrc !=NULL));  
  
                  
    while(*strSrc != '\0' )
    {
        *strDest = *strSrc;
        *strSrc++;
        *strDest++;
    }
    *strDest = '\0';
    return address ;
        
}


int main(void)
{
    char a[10];
    mystrcpy(a,"123");
    printf("%s",a);
    return 0;
}
while(*strSrc != '\0' )
    {
        *strDest = *strSrc;
        *strSrc++; //把这行里的星号去掉!
        *strDest++; //把这行里的星号去掉!
    }

my tech blog: /hoodlum1980
2011-04-02 06:05
huiming
Rank: 2
等 级:论坛游民
帖 子:31
专家分:36
注 册:2010-4-8
收藏
得分:0 
4楼正解
2011-04-02 23:35
快速回复:我自己写的strcpy为什么出错?
数据加载中...
 
   



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

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