| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 952 人关注过本帖
标题:关于一个自编的字符串函数的问题
只看楼主 加入收藏
mark0289
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2006-4-5
收藏
 问题点数:0 回复次数:3 
关于一个自编的字符串函数的问题
下面是源码
#include <string.h>

char* my_strcpy_end(char *dst, char const *src);

int main()
{    
    char const str1[]="0123456789abvssd";
    char *str2,*pi;
    //printf("%s\n",str1);
    //printf("%x\n",str2);
    
         pi = my_strcpy_end( str2, str1 );
    
    printf("%s\n",str2);
    printf("%x\n",pi);
    return 0;
}

char* my_strcpy_end(register char *dst, register char const *src)
{
    while ( (*dst++=*src++) != '\0' );
    return (dst-1);
}

库函数中的strcpy返回的指针是目标字符串的头指针,在这里my_strcpy_end函数返回尾指针

问题是:将测试的字符串设为“01234”之类较短的字符串时,可以输出结果,若改为“0123456789abvssd”之类长一点的字符串,有时得不到结果,有时有结果显示,但是最后会提示“程序遇到问题需要关闭”,不知道是什么原因?

编译环境是c-free 4.0
搜索更多相关主题的帖子: 函数 字符 
2008-08-31 21:35
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
LZ,指针这么玩很危险的。
竟敢随便改一个没初始化的指针的值。

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-08-31 21:46
codeplayer
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-26
收藏
得分:0 
应该先给dest分配一段内存吧
2008-08-31 21:56
mark0289
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2006-4-5
收藏
得分:0 
多谢楼上两位了
str2没有被初始化导致程序执行完后可能会产生错误,也有可能顺利通过
但是还是很危险的
重新定义char str2[100];
就没有问题了

犯了个很愚蠢的错误
2008-09-01 10:33
快速回复:关于一个自编的字符串函数的问题
数据加载中...
 
   



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

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