Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523637
  • 博文数量: 118
  • 博客积分: 10028
  • 博客等级: 上将
  • 技术积分: 1820
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 18:46
文章分类

全部博文(118)

文章存档

2009年(12)

2008年(106)

我的朋友

分类: C/C++

2008-10-06 20:36:43



题目:

   不使用库函数,编写函数int strcmp(char  *src, char *dst)

   前者大于后者返回1,小于返回-1,相等返回0


代码:


#include <stdio.h>

int main(int argc,char **argv)
{
    int rst;
    char *a="abcde";
    char *b="abcdef";
    int strcmp(char*,char*);

    rst=strcmp(a,b);

    printf("%d\n",rst);
    return 0;
}

int strcmp(char *src,char *dst)
{
    int i;

    for(i=0;*(src+i)!='\0'||*(dst+i)!='\0';i++)
    {
        if(*(src+i)>*(dst+i))
            return 1;
        else if(*(src+i)<*(dst+i))
            return -1;
    }
    return 0;
}



改版了~2008/11/21(把发表时间修改了下,文章提前了,呵呵~本来是10月6号发表的)
    1,设置断言
    2,设置const声明
    3,用指针
    4,判断是否等于'\0'时只判断一个即可,同时判断是否相等
代码:

#include <stdio.h>
#include <assert.h>

int main(int argc,char **argv)
{
    int rst;
    char *a="abcde";
    char *b="abcdef";
    int mystrcmp(const char*,const char*);

    rst=mystrcmp(a,b);

    printf("%d\n",rst);
    return 0;
}

int mystrcmp(const char *src,const char *dst)
{
    assert(src != NULL && dst != NULL);
    char *p1,*p2;
    p1=src;
    p2=dst;

    while(*p1 == *p2 && *p1 != '\0'){
        p1++;
        p2++;
    }
    if(*p1 == *p2)
        return 0;
    else if(*p1 > *p2)
        return 1;
    else
        return -1;
}

阅读(1853) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-10-31 10:51:56

int strcmp(const char *src, const char *dst) { for (; *dst != '\0' && *src == *dst; src++, dst++) {} return *src - *dst; } 差不多这个样子也OK

chinaunix网友2008-10-31 10:51:48

int strcmp(const char *src, const char *dst) { for (; *dst != '\0' && *src == *dst; src++, dst++) {} return *src - *dst; } 差不多这个样子也OK