CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

初学者,关于C的一个strcmp的问题

楼主nila(昵拉)2006-03-01 13:50:12 在 C/C++ / C语言 提问

比较两个字符串是否相等,不您用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

相关问题

  • 为什么用C的strcmp会比C++的compare快这么多????
  • c#?!?!?!
  • :)C#
  • C#!!!!!
  • C
  • c++
  • C#?
  • C#
  • c++
  • C#?

关键词

  • strcmp
  • str
  • same
  • char
  • else

得分解答快速导航

  • 帖主:nila

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo