C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 1292|回复: 11

我学习Linux时看到的一段C语言代码   [复制链接]

Rank: 6Rank: 6

主题
68
帖子
348
C币
578 枚
在线时间
57 小时
发表于 2010-7-11 02:04:08 |显示全部楼层
本帖最后由 volcanol 于 2010-7-11 02:05 编辑

void  str2str(char *from, char  *to)
         {
              while(*from)
                   *(to++)=*(from++);
         }

    不知道大家看到这段代码有什么想法。不是源代码, 做了一点修改。

Rank: 1

主题
0
帖子
1
C币
1 枚
在线时间
0 小时
发表于 2010-7-11 11:35:14 |显示全部楼层
是copy字符串吗?
1# volcanol

Rank: 6Rank: 6

主题
68
帖子
348
C币
578 枚
在线时间
57 小时
发表于 2010-7-11 15:13:16 |显示全部楼层
是copy字符串吗?
1# volcanol
milertom 发表于 2010-7-11 11:35




不错 ,  但是你看看我这样修改后能运行吗?

Rank: 1

主题
0
帖子
18
C币
3 枚
在线时间
3 小时
发表于 2010-9-3 10:42:05 |显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

Rank: 1

主题
0
帖子
1
C币
1 枚
在线时间
1 小时
发表于 2010-10-15 23:53:47 |显示全部楼层
指针To没有结束符

Rank: 1

主题
0
帖子
1
C币
1 枚
在线时间
0 小时
发表于 2010-10-29 14:38:37 |显示全部楼层
void  str2str(char *from, char  *to)
         {
              char *p = from;
              while(p)
                   *(to++)=*(p++);
         }

Rank: 6Rank: 6

主题
68
帖子
348
C币
578 枚
在线时间
57 小时
发表于 2010-11-3 11:32:19 |显示全部楼层
void  str2str(char *from, char  *to)
         {
              char *p = from;
              while(p) ...
chenfuxu 发表于 2010-10-29 14:38


其实那段代码要能够运行, 但是可能越界。 你用一个中间指针,并不能解决可能越界的问题,而且还带来了新的问题, 因为指针p++,是没有结束条件的 . 这个复制函数使用有一个限制条件那就是 form参数接受的字符必须是以'\0'结束的数组、或者指针指向的字符序列结尾是'\0'、或者是字符串常量。

Rank: 6Rank: 6

主题
68
帖子
348
C币
578 枚
在线时间
57 小时
发表于 2010-11-3 11:32:50 |显示全部楼层
回复 6# chenfuxu


其实那段代码要能够运行, 但是可能越界。 你用一个中间指针,并不能解决可能越界的问题,而且还带来了新的问题, 因为指针p++,是没有结束条件的 . 这个复制函数使用有一个限制条件那就是 form参数接受的字符必须是以'\0'结束的数组、或者指针指向的字符序列结尾是'\0'、或者是字符串常量。

Rank: 2

主题
2
帖子
65
C币
71 枚
在线时间
32 小时
发表于 2010-12-5 21:47:22 |显示全部楼层
回复 1# volcanol
while(*to++=*from++);

Rank: 1

主题
0
帖子
1
C币
1 枚
在线时间
0 小时
发表于 2010-12-9 21:18:02 |显示全部楼层
在新拷贝的字串to中结尾没有加'\0’
void  str2str(char *from, char  *to)
{
        while(*from)
              *(to++)=*(from++);
         *to = '\0';
}
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-7 22:22

©2009-2011 cyuyan.com.cn

回顶部