打印

看看这个字符串拷贝函数,输出有问题呀?

[复制链接]
1336|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chjmacong|  楼主 | 2012-2-9 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己写的字符串copy函数,代码如下:

#include <stdio.h>

char *strcpy(char *dst,char *src)
{
    for(; *src++ != '\0';)
    {
        *dst++ = *src;
    }
    return dst;
}

void main()
{
    char src[] = "Hello World!" ;
    char dst[20] ;

    printf("%s",strcpy(dst,src));
    printf("\n\n\n\n\n");
}

输出结果为:烫烫烫烫Hello World!

不清楚是怎么回事,望高手指导!
}

相关帖子

沙发
chjmacong|  楼主 | 2012-2-9 15:06 | 只看该作者
发现将: char dst[20] ;
改成char dst[12] ; 到 char dst[9] ; 输出时正常的,其他都不正常

使用特权

评论回复
板凳
chjmacong|  楼主 | 2012-2-9 15:48 | 只看该作者
改成这样是OK的,


#include <stdio.h>

void strcpy(char *dst,char const  *src)
{
        for(; *src != '\0';)
        {
                *dst++ = *src++;
        }
}

void main()
{
        char src[] = "Hello World!" ;
        char dst[20] = "" ;

        strcpy(dst,src);

        printf("%s",dst);
        printf("\n\n\n\n\n");
}

但是我还想这样去实现:printf("%s",strcpy(dst,src));,诸位高手指导一下!

*

使用特权

评论回复
地板
chjmacong|  楼主 | 2012-2-9 15:50 | 只看该作者
用库函数就可以:

#include <stdio.h>
#include <string.h>

void main()
{
        char src[] = "Hello World!" ;
        char dst[20] = "" ;

        printf("%s",strcpy(dst,src));
        printf("\n\n\n\n\n");
}

这个用库函数OK!
指导下,高手们!

使用特权

评论回复
5
john_lee| | 2012-2-9 23:12 | 只看该作者
dst不要动。
char *strcpy(char *dst,char *src)
{
    char *p = dst;
    for(; *src++ != '\0';)
    {
        *p++ = *src;
    }
    return dst;
}

使用特权

评论回复
6
chjmacong|  楼主 | 2012-2-10 11:15 | 只看该作者
dst不要动。
char *strcpy(char *dst,char *src)
{
    char *p = dst;
    for(; *src++ != '\0';)
    {
        *p++ = *src;
    }
    return dst;
}
john_lee 发表于 2012-2-9 23:12


谢谢兄弟,你的思路正确的,dst不要动,呵呵~~~不过你的有个小问题,输出少了H
本人改动如下:

char *strcpy(char *dst,char *src)
{
    char *p = dst;
    for(; *src != '\0';)
    {
        *p++ = *src++;
    }
    return dst;
}

OK了!呵呵~~~谢谢你了

使用特权

评论回复
7
john_lee| | 2012-2-10 14:19 | 只看该作者
6# chjmacong
我那是照抄你楼主位的程序,只是为了说明dst不要动,并没有仔细看copy逻辑。

但你最后给出的程序还是不正确,缺少了最后的 '\0' 结束。

正确的是这样:
char *strcpy(char *dst, char *src)
{
    char *p = dst;
    char ch;
    do {
        ch = *src++;
        *p++ = ch;
    } while (ch != 0);
    return dst;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:即使自己知道也不要轻易说出来,先听听别人怎么看!

4

主题

152

帖子

1

粉丝