题目: 不使用库函数,编写函数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) |