| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8580 人关注过本帖, 2 人收藏
标题:strcpy函数怎么写
取消只看楼主 加入收藏
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
虽然说是这么说,不过实现起来也不容易的,有空的话就码一下吧

[color=white]
2008-05-14 20:05
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
[bo]以下是引用 [un]StarWing83[/un] 在 2008-5-14 20:11 的发言:[/bo]
两头复制,复杂度仍然是n……

char* str_cpy(char* dest,const char* src)
{
    assert(dest != NULL && src != NULL);
    char *str=dest;
    while (src[0] && src[1] && src[2] && src[3])
        *(int*)dest++ = *(int*)src++;
    while (*dest++ = *src++);//s这里写NULL;GCC会给出警告:语句无意义。
    return str;
}

随便码了个,不知道对不对……


你这个代码比二楼的直接复制还要慢得多

[color=white]
2008-05-14 20:20
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
足足是二楼代码的时间的3.8倍

[color=white]
2008-05-14 20:23
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
加速的方法早已公布了,你要是利用刚刚所说的方法去写汇编,
超越C代码的速度根本不难
你有本事就用二楼的代码改写汇编来较量呗

[color=white]
2008-05-14 21:12
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
我只是想教训你:算法优化比汇编优化有效得多
假如你不懂算法,慢慢学,不着急

[color=white]
2008-05-14 21:21
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
假如你还想比的话,换个题目,就和你比算法
你用汇编写,我用C写,你敢不
你不会不知道90%的人用汇编写的代码反而不如编译器优化出来的代码吧

[color=white]
2008-05-14 21:26
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http:// **
*****************************************************************/
#define IS_END(n) ((n&0xFF)&&(n&0xFF00)&&(n&0xFF0000)&&(n&0xFF000000))
char* StrCpy(char* szDest, const char* szSource)
{
    char* szPret = szDest;
    assert(szDest && szSource);
    if ((3 & (int)szSource) && IS_END(*(int*)szSource))
    {
        while (*szDest++ = *szSource++)
            if ((3 & (int)szSource)==0) break;
    }
    {
        int  *pDes = (int*)szDest, *pSr = (int*)szSource;
        while (IS_END(*pSr))
        {
            *pDes++ = *pSr++;
        }
        szDest = (char*)pDes, szSource = (char*)pSr;
    }
    while(*szDest++ = *szSource++)
        ;
    return szPret;
}


我的C版本,其实还有一个优化,不过效果不明显,干脆没有写上来
我没有否认汇编什么什么,用上MMX指令的话可以快很多,C编译器根本不可能优化得更快
但和C版本的优化是用的同一个原理
不过这似乎偏题了。

[color=white]
2008-05-14 23:20
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
[bo]以下是引用 [un]VxWorks[/un] 在 2008-5-14 22:44 的发言:[/bo]
o(∩_∩)o...
bccn现在流行党派之争,派内的互相追捧,派间互相打击。
我是一个自由人,不会成为任何一派打压别人的工具。

我谈论问题对事不对人,只谈论纯粹的技术,谁有错误都会指出。
有的人指出别人的错误是为了炫耀自己打击他人,为打击别人忘记了来技术论坛的初衷,这是我鄙视的。

我倒喜欢和你学术上的争论,要是真出现矛盾(不管最后的结果是什么)
而不喜欢和一些拿程序无关的东西来争论的人吵架,
那种人不值得和他吵,和他吵又学不到东西,哈哈
很多现成的例子都在告诉我们这个事实

[color=white]
2008-05-15 00:01
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
不打自招,哈哈,懒得和无聊的东西说些什么

[color=white]
2008-05-15 00:22
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
>>需要加断言吗?
>>1.断言只是在debug版本中有用。
>>2.调用库函数时实参的有效性由调用者负责。

这是你在20楼说的。
那我问你一个问题,你写代码从来不写断言?
你就能保证你对库函数的调用永远正确有效?

[color=white]
2008-05-15 12:11
快速回复:strcpy函数怎么写
数据加载中...
 
   



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

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