免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 4640 | 回复: 36
打印 上一主题 下一主题

大家看看这个程序哪个地方错了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-09 10:21 |只看该作者 |倒序浏览
  1. strcmp1(char *p,char *q)
  2. {
  3.         while((*p != '\0')&&(*p = *q))
  4.         {
  5.                 p++;
  6.                 q++;
  7.         }
  8.         if(*p >; *q)
  9.                 return(1);
  10.         else
  11.                 return(-1);
  12.         if(*p = *q)
  13.                 return(0);
  14. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2004-03-09 10:26 |只看该作者

大家看看这个程序哪个地方错了

q比p短怎么办?
*p==*q时也返回-1
*p=*q这里少了一个=

论坛徽章:
0
3 [报告]
发表于 2004-03-09 10:36 |只看该作者

大家看看这个程序哪个地方错了

啊,对少个=,那就再加上一条件*q != '\0',这样能行了吗

论坛徽章:
0
4 [报告]
发表于 2004-03-09 10:41 |只看该作者

大家看看这个程序哪个地方错了

*p==*q的时候你也返回-1了

论坛徽章:
0
5 [报告]
发表于 2004-03-09 10:59 |只看该作者

大家看看这个程序哪个地方错了

改对了吧这样,呵呵,我刚调试过
  1. strcmp1(char *p,char *q)
  2. {
  3.         while((*p != '\0')&&(*p == *q))
  4.         {
  5.                 p++;
  6.                 q++;
  7.         }
  8.         if(*p >;= *q)
  9.                 return(1);
  10.         if(*p < *q)
  11.                 return(-1);
  12. }
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-03-09 11:28 |只看该作者

大家看看这个程序哪个地方错了

忘了返回值是int了吧。
你看一看我写的一个。

  1. int strcmp1( char *s1,  char *s2)
  2. {
  3.         while ( (*s1 != '\0') && (*s2 != '\0') && (*s1++ == *s2++) )
  4.                 ;
  5.         return (*s1 - *s2);
  6. }
复制代码

论坛徽章:
0
7 [报告]
发表于 2004-03-09 13:26 |只看该作者

大家看看这个程序哪个地方错了

原帖由 "lenovo" 发表:

你看一看我写的一个。

  1. int strcmp1( char *s1,  char *s2)
  2. {
  3.    while ( (*s1 != '\0') && (*s2 != '\0') && (*s1++ == *s2++) )
  4.       ;
  5.    return (*s1 - *s2);
  6. }
复制代码


确实很精炼,不过程序中有错误存在,注意 ++ 的使用。仔细检查一下循环结束时的状态就知道应该怎样修改这个程序了。

其实循环条件还有进一步精简的余地。如下所示,跟上面程序得到的结果完全相同:

  1.   while ( (*s1++ == *s2++) && *s1 )
  2.     ;
复制代码

论坛徽章:
0
8 [报告]
发表于 2004-03-09 13:28 |只看该作者

大家看看这个程序哪个地方错了

感觉斑竹这个算法和系统的strcmp有点象啊,应该没有什么错把?

论坛徽章:
0
9 [报告]
发表于 2004-03-09 13:43 |只看该作者

大家看看这个程序哪个地方错了

[quote]原帖由 "whyglinux"][/quote 发表:

版主的对,你的不对。
慢慢琢磨吧!

论坛徽章:
0
10 [报告]
发表于 2004-03-09 13:46 |只看该作者

大家看看这个程序哪个地方错了

我也试过了,斑竹的确实不错的,呵呵,也挺简洁的,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP