标题:我自己写的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: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-335158-1-1.html




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

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