| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1843 人关注过本帖
标题:字符串复制的问题
只看楼主 加入收藏
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用wp231957在2017-3-26 07:07:39的发言:

我给你看看微软工程师写的strcmp源码/*这里我摘录了函数的版权情况
*strcmp.c - routine to compare two strings (for equal, less, or greater)
*
*       Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
*       Compares two string, determining their lexical order.
*
*/
/*  这里我只摘录了函数的返回值
Exit:
*       returns -1 if src <  dst
*       returns  0 if src == dst
*       returns +1 if src >  dst
*/
int __cdecl strcmp ( const char * src, const char * dst )
{
        int ret = 0 ;
        while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) ++src, ++dst;
        if ( ret < 0 )  ret = -1 ;
        else if ( ret > 0 ) ret = 1 ;
        return( ret );
}

学习了
考虑扩展码部分output()要修改为:
int output(char *str1, char *str2)
{
    for (; *str1==*str2 && *str1 && *str2; str1++,str2++) NULL;
    return *(unsigned char *)str1 - *(unsigned char *)str2;
}
2017-03-26 08:07
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 19楼 wp231957
我笑了,为了省一对花括号,也是拼了。

[此贴子已经被作者于2017-3-26 08:19编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-26 08:12
zhuaaaaaa
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2017-3-25
收藏
得分:0 
回复 21楼 吹水佬
int __cdecl strcmp ( const char * src, const char * dst )
{
        int ret = 0 ;
        while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst)) ++src, ++dst;//去掉后面的&&*dest,功能好像不受影响,是吗?还是我考虑不充分?
        if ( ret < 0 )  ret = -1 ;
        else if ( ret > 0 ) ret = 1 ;
        return( ret );
}
2017-03-26 09:18
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10608
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 23楼 zhuaaaaaa
&& *dst不能少。当src==dst时要考虑 *src=='\0' 和 *dst=='\0'的时候就要跳出循环。
2017-03-26 09:40
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
收藏
得分:0 
回复 18楼 吹水佬
这是自己想的。比较出所以ascll不是单个的。而且说了不能用strcmp函数。
2017-03-26 10:02
快速回复:字符串复制的问题
数据加载中...
 
   



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

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