初学者,关于C的一个strcmp的问题
比较两个字符串是否相等,不您用strcmp.
怎么写,请高手帮个忙? 谢谢!!!!
问题点数:20、回复次数:14Top
1 楼du51(郁郁思扬)回复于 2006-03-01 14:17:09 得分 0
#include<stdio.h>
#include<stdlib.h>
int mycmp(char *str1,char *str2)
{
while(*str1**str2)if(*str1++-*str2++)return 0;
return !*str1*!*str2?1:0;
}
int main()
{
char *str1="Hello World",*str2="Hello Java";
printf("%d\n",mycmp(str1,str2));
system("PAUSE");
return 0;
}Top
2 楼windking21(想玩玩WOW 真的那么难吗)回复于 2006-03-01 14:23:18 得分 0
int strcmp(const char *str1,const char *str2)
{
while((*str1==*str2)&&(*str1))
{
str1++;
str2++;
}
if((*str1==*str2)&&(!*str1)) //Same strings
return 0;
else if((*str1)&&(!*str2)) //Same but str1 longer
return -1;
else if((*str2)&&(!*str1)) //Same but str2 longer
return((*str1>*str2)?-1:1);
else return 2;//not same
}Top
3 楼cyberHunK(→迈克·老猫←)回复于 2006-03-01 14:25:39 得分 0
char *p1,*p2;
p1 = string1;
p2 = string2;
if(strlen(string1) == strlen(string2))
{
for(i=0;i<=strlen(string1);)
{
if(*(p1+i)==*(p2+i));
i++;
else
printf("error");
break;
}
}
Top
4 楼mars841215(龙行天下)回复于 2006-03-01 15:02:56 得分 0
StrCom(s,t) //
{
int i;
for(i=0;i<s.len&&i<t.len;i++)
if(s.ch[i]!=t.ch[i])
return(s.ch[i]-t.ch[i]);
return(s.len-t.len);
}Top
5 楼mars841215(龙行天下)回复于 2006-03-01 15:04:57 得分 0
忘加注释了// if s==t, return 0 ;
else if s>t, return 1;
if s<t,return -1
Top
6 楼cdo(Everything has a favourable turn)回复于 2006-03-01 16:33:18 得分 0
那就一个字符一个字符的比呀。Top
7 楼tonyMCM(南京~上海)回复于 2006-03-01 16:37:43 得分 0
cyberHunK(→迈克·老猫←) ( 的比较适用
也容易理解Top
8 楼duduhaha(三人行必有我师)回复于 2006-03-01 17:10:28 得分 0
给你看个unix v7中的代码,就是精练.
/*
* Compare strings: s1>s2: >0 s1==s2: 0 s1<s2: <0
*/
strcmp(char *s1, char *s2)
{
while (*s1 == *s2++)
if (*s1++=='\0')
return(0);
return(*s1 - *--s2);
}
Top
9 楼nila(昵拉)回复于 2006-03-01 17:11:26 得分 0
可是虽然不能用strcmp, 但是他需要的是实现strcmp的原形
所以我觉得 cyberHunK(→迈克·老猫←) 他这样写不怎么行Top
10 楼alen_ghl(东方求*)回复于 2006-03-01 18:24:20 得分 0
strcmp(char *s1, char *s2)
{
while (*s1 == *s2++)
if (*s1++=='\0')
return(0);
return(*s1 - *--s2);
}
-------------------
确实不错Top
11 楼skyundersun()回复于 2006-03-01 22:27:59 得分 0
还是unix的最强Top
12 楼duduhaha(三人行必有我师)回复于 2006-03-01 23:39:38 得分 0
unix始祖里奇的功力可不是我们一般人能有的,呵呵.Top
13 楼sjjf(水晶剑锋)回复于 2006-03-01 23:48:17 得分 0
废话,在unix v7年代前,程序界的高手几乎都是非常聪明的人,至少数学都是很牛x的。附带的产品是算法也很牛x,因为他们追求极致的运行效率。
Top
14 楼wjd7623054(千古风流)回复于 2006-03-02 19:07:13 得分 0
两个strlen本身就废效率,unix那个是高效的Top




